{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Exploring CVEfixes:\n",
    "- Computing some statistics on the data, and generating some diagrams and tables from CVEfixes dataset "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt\n",
    "import sqlite3 as lite\n",
    "from sqlite3 import Error\n",
    "from pathlib import Path\n",
    "from datetime import date\n",
    "import numpy as np\n",
    "import seaborn as sns\n",
    "import matplotlib.ticker as tick\n",
    "import requests\n",
    "import difflib as diff\n",
    "import re \n",
    "import csv\n",
    "import ast\n",
    "%matplotlib inline\n",
    "\n",
    "# pd.set_option('mode.chained_assignment', None)\n",
    "\n",
    "def create_connection(db_file):\n",
    "    \"\"\"\n",
    "    create a connection to sqlite3 database\n",
    "    \"\"\"\n",
    "    conn = None\n",
    "    try:\n",
    "        conn = lite.connect(db_file, timeout=10)  # connection via sqlite3\n",
    "        # engine = sa.create_engine('sqlite:///' + db_file)  # connection via sqlalchemy\n",
    "        # conn = engine.connect()\n",
    "    except Error as e:\n",
    "        print(e)\n",
    "    return conn\n",
    "\n",
    "\n",
    "DATA_PATH = Path.cwd().parents[0] / 'Data'\n",
    "FIGURE_PATH = Path.cwd() / 'figures'\n",
    "RESULT_PATH = Path.cwd() / 'results'\n",
    "\n",
    "Path(DATA_PATH).mkdir(parents=True, exist_ok=True)\n",
    "Path(FIGURE_PATH).mkdir(parents=True, exist_ok=True)\n",
    "Path(RESULT_PATH).mkdir(parents=True, exist_ok=True)\n",
    "\n",
    "conn = create_connection(DATA_PATH / \"CVEfixes.db\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Quering to CVEfixes database to get the parts as the separate datasets"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "- An example query to retrieve all the methods of C programming language. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>name</th>\n",
       "      <th>signature</th>\n",
       "      <th>nloc</th>\n",
       "      <th>parameters</th>\n",
       "      <th>token_count</th>\n",
       "      <th>code</th>\n",
       "      <th>before_change</th>\n",
       "      <th>programming_language</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>check_1_6_dummy</td>\n",
       "      <td>check_1_6_dummy( kadm5_principal_ent_t entry ,...</td>\n",
       "      <td>13</td>\n",
       "      <td>['entry', 'mask', 'n_ks_tuple', 'ks_tuple', 'p...</td>\n",
       "      <td>94</td>\n",
       "      <td>check_1_6_dummy(kadm5_principal_ent_t entry, l...</td>\n",
       "      <td>True</td>\n",
       "      <td>C</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>check_1_6_dummy</td>\n",
       "      <td>check_1_6_dummy( kadm5_principal_ent_t entry ,...</td>\n",
       "      <td>13</td>\n",
       "      <td>['entry', 'mask', 'n_ks_tuple', 'ks_tuple', 'p...</td>\n",
       "      <td>98</td>\n",
       "      <td>check_1_6_dummy(kadm5_principal_ent_t entry, l...</td>\n",
       "      <td>False</td>\n",
       "      <td>C</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>process_chpw_request</td>\n",
       "      <td>process_chpw_request( krb5_context context , v...</td>\n",
       "      <td>309</td>\n",
       "      <td>['context', 'server_handle', 'realm', 'keytab'...</td>\n",
       "      <td>1935</td>\n",
       "      <td>process_chpw_request(krb5_context context, voi...</td>\n",
       "      <td>False</td>\n",
       "      <td>C</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>process_chpw_request</td>\n",
       "      <td>process_chpw_request( krb5_context context , v...</td>\n",
       "      <td>309</td>\n",
       "      <td>['context', 'server_handle', 'realm', 'keytab'...</td>\n",
       "      <td>1935</td>\n",
       "      <td>process_chpw_request(krb5_context context, voi...</td>\n",
       "      <td>True</td>\n",
       "      <td>C</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>init_ctx_reselect</td>\n",
       "      <td>init_ctx_reselect( OM_uint32 * minor_status , ...</td>\n",
       "      <td>25</td>\n",
       "      <td>['minor_status', 'sc', 'acc_negState', 'suppor...</td>\n",
       "      <td>162</td>\n",
       "      <td>init_ctx_reselect(OM_uint32 *minor_status, spn...</td>\n",
       "      <td>True</td>\n",
       "      <td>C</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                   name                                          signature  \\\n",
       "0       check_1_6_dummy  check_1_6_dummy( kadm5_principal_ent_t entry ,...   \n",
       "1       check_1_6_dummy  check_1_6_dummy( kadm5_principal_ent_t entry ,...   \n",
       "2  process_chpw_request  process_chpw_request( krb5_context context , v...   \n",
       "3  process_chpw_request  process_chpw_request( krb5_context context , v...   \n",
       "4     init_ctx_reselect  init_ctx_reselect( OM_uint32 * minor_status , ...   \n",
       "\n",
       "  nloc                                         parameters token_count  \\\n",
       "0   13  ['entry', 'mask', 'n_ks_tuple', 'ks_tuple', 'p...          94   \n",
       "1   13  ['entry', 'mask', 'n_ks_tuple', 'ks_tuple', 'p...          98   \n",
       "2  309  ['context', 'server_handle', 'realm', 'keytab'...        1935   \n",
       "3  309  ['context', 'server_handle', 'realm', 'keytab'...        1935   \n",
       "4   25  ['minor_status', 'sc', 'acc_negState', 'suppor...         162   \n",
       "\n",
       "                                                code before_change  \\\n",
       "0  check_1_6_dummy(kadm5_principal_ent_t entry, l...          True   \n",
       "1  check_1_6_dummy(kadm5_principal_ent_t entry, l...         False   \n",
       "2  process_chpw_request(krb5_context context, voi...         False   \n",
       "3  process_chpw_request(krb5_context context, voi...          True   \n",
       "4  init_ctx_reselect(OM_uint32 *minor_status, spn...          True   \n",
       "\n",
       "  programming_language  \n",
       "0                    C  \n",
       "1                    C  \n",
       "2                    C  \n",
       "3                    C  \n",
       "4                    C  "
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df_c_methods = pd.read_sql_query(\"SELECT m.name, m.signature, m.nloc, \\\n",
    "m.parameters, m.token_count, m.code, m.before_change, f.programming_language FROM method_change m, file_change f \\\n",
    "WHERE f.file_change_id=m.file_change_id AND f.programming_language='C'\", conn)\n",
    "df_c_methods.head(5)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "- Another example of query to extract all the files that have added/removed only a single statement to fix the vulnerabilities."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>cve_id</th>\n",
       "      <th>filename</th>\n",
       "      <th>num_lines_added</th>\n",
       "      <th>num_lines_deleted</th>\n",
       "      <th>code_before</th>\n",
       "      <th>code_after</th>\n",
       "      <th>cwe_id</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>CVE-1999-0731</td>\n",
       "      <td>saver.cpp</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>#include &lt;pwd.h&gt;\\n#include &lt;unistd.h&gt;\\n#includ...</td>\n",
       "      <td>#include &lt;pwd.h&gt;\\n#include &lt;unistd.h&gt;\\n#includ...</td>\n",
       "      <td>NVD-CWE-Other</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>CVE-2012-1013</td>\n",
       "      <td>svr_principal.c</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>/* -*- mode: c; c-basic-offset: 4; indent-tabs...</td>\n",
       "      <td>/* -*- mode: c; c-basic-offset: 4; indent-tabs...</td>\n",
       "      <td>NVD-CWE-Other</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>CVE-2014-4343</td>\n",
       "      <td>spnego_mech.c</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>/*\\n * Copyright (C) 2006,2008 by the Massachu...</td>\n",
       "      <td>/*\\n * Copyright (C) 2006,2008 by the Massachu...</td>\n",
       "      <td>CWE-415</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>CVE-2014-4344</td>\n",
       "      <td>spnego_mech.c</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>/*\\n * Copyright (C) 2006,2008 by the Massachu...</td>\n",
       "      <td>/*\\n * Copyright (C) 2006,2008 by the Massachu...</td>\n",
       "      <td>CWE-476</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>CVE-2014-5352</td>\n",
       "      <td>context_time.c</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>/* -*- mode: c; c-basic-offset: 4; indent-tabs...</td>\n",
       "      <td>/* -*- mode: c; c-basic-offset: 4; indent-tabs...</td>\n",
       "      <td>NVD-CWE-Other</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "          cve_id         filename num_lines_added num_lines_deleted  \\\n",
       "0  CVE-1999-0731        saver.cpp               1                 0   \n",
       "1  CVE-2012-1013  svr_principal.c               1                 1   \n",
       "2  CVE-2014-4343    spnego_mech.c               0                 1   \n",
       "3  CVE-2014-4344    spnego_mech.c               1                 1   \n",
       "4  CVE-2014-5352   context_time.c               1                 1   \n",
       "\n",
       "                                         code_before  \\\n",
       "0  #include <pwd.h>\\n#include <unistd.h>\\n#includ...   \n",
       "1  /* -*- mode: c; c-basic-offset: 4; indent-tabs...   \n",
       "2  /*\\n * Copyright (C) 2006,2008 by the Massachu...   \n",
       "3  /*\\n * Copyright (C) 2006,2008 by the Massachu...   \n",
       "4  /* -*- mode: c; c-basic-offset: 4; indent-tabs...   \n",
       "\n",
       "                                          code_after         cwe_id  \n",
       "0  #include <pwd.h>\\n#include <unistd.h>\\n#includ...  NVD-CWE-Other  \n",
       "1  /* -*- mode: c; c-basic-offset: 4; indent-tabs...  NVD-CWE-Other  \n",
       "2  /*\\n * Copyright (C) 2006,2008 by the Massachu...        CWE-415  \n",
       "3  /*\\n * Copyright (C) 2006,2008 by the Massachu...        CWE-476  \n",
       "4  /* -*- mode: c; c-basic-offset: 4; indent-tabs...  NVD-CWE-Other  "
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "query = \"\"\"\n",
    "SELECT cv.cve_id, f.filename, f.num_lines_added, f.num_lines_deleted, f.code_before, f.code_after, cc.cwe_id \n",
    "FROM file_change f, commits c, fixes fx, cve cv, cwe_classification cc\n",
    "WHERE f.hash = c.hash \n",
    "AND c.hash = fx.hash \n",
    "AND fx.cve_id = cv.cve_id \n",
    "AND cv.cve_id = cc.cve_id \n",
    "AND f.num_lines_added<=1 \n",
    "AND f.num_lines_deleted<=1;\n",
    "\"\"\"\n",
    "java_single_line_fixes = pd.read_sql_query(query, conn)\n",
    "java_single_line_fixes.head(5)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Statistics on _CVEfixes_ data"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "- Loading tables into dataframes for further processing"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "df_commit = pd.read_sql('SELECT * FROM commits', con=conn)\n",
    "df_file = pd.read_sql('SELECT * FROM file_change', con=conn)\n",
    "df_method = pd.read_sql('SELECT * FROM method_change', con=conn)\n",
    "df_cve = pd.read_sql('SELECT * FROM cve', con=conn)\n",
    "df_fixes = pd.read_sql('SELECT * FROM fixes', con=conn)\n",
    "df_cwe_class = pd.read_sql('SELECT * FROM cwe_classification', con=conn)\n",
    "df_cwe = pd.read_sql('SELECT * FROM cwe', con=conn)\n",
    "df_repo = pd.read_sql('SELECT * FROM repository', con = conn)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Top 10 major projects that have contributed most of the vulnerability data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "commit_freq_query = \"\"\"\n",
    "SELECT fx.repo_url as commit_project, count(fx.hash) as commit_count\n",
    "FROM commits c, fixes fx\n",
    "WHERE fx.hash=c.hash\n",
    "GROUP BY fx.repo_url\n",
    "ORDER BY commit_count DESC;\n",
    "\"\"\"\n",
    "\n",
    "file_freq_query = \"\"\"\n",
    "SELECT fx.repo_url as file_project, count(f.file_change_id) as file_count \n",
    "FROM commits c, fixes fx, file_change f\n",
    "WHERE fx.hash=c.hash\n",
    "AND c.hash = f.hash\n",
    "GROUP BY fx.repo_url\n",
    "ORDER BY file_count DESC;\n",
    "\"\"\"\n",
    "method_freq_query = \"\"\"\n",
    "SELECT fx.repo_url as method_project, count(m.method_change_id) as method_count \n",
    "FROM commits c, fixes fx, file_change f, method_change m\n",
    "WHERE fx.hash=c.hash\n",
    "AND c.hash = f.hash\n",
    "AND f.file_change_id = m.file_change_id\n",
    "GROUP BY fx.repo_url\n",
    "ORDER BY method_count DESC;\n",
    "\"\"\"\n",
    "\n",
    "df_commit_freq = pd.read_sql_query(commit_freq_query, con=conn)\n",
    "df_file_freq = pd.read_sql_query(file_freq_query, con=conn)\n",
    "df_method_freq = pd.read_sql_query(method_freq_query, con=conn)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "- Ordering the projects on the basis of number of commits:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>commit_project</th>\n",
       "      <th>commit_count</th>\n",
       "      <th>file_count</th>\n",
       "      <th>method_count</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>linux</td>\n",
       "      <td>1029</td>\n",
       "      <td>2007</td>\n",
       "      <td>4303</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>ImageMagick</td>\n",
       "      <td>171</td>\n",
       "      <td>256</td>\n",
       "      <td>512</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>tensorflow</td>\n",
       "      <td>156</td>\n",
       "      <td>340</td>\n",
       "      <td>1045</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>phpmyadmin</td>\n",
       "      <td>126</td>\n",
       "      <td>242</td>\n",
       "      <td>222</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>tcpdump</td>\n",
       "      <td>101</td>\n",
       "      <td>344</td>\n",
       "      <td>299</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>FFmpeg</td>\n",
       "      <td>88</td>\n",
       "      <td>104</td>\n",
       "      <td>213</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>php-src</td>\n",
       "      <td>61</td>\n",
       "      <td>129</td>\n",
       "      <td>454</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>MISP</td>\n",
       "      <td>54</td>\n",
       "      <td>87</td>\n",
       "      <td>98</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>WordPress</td>\n",
       "      <td>47</td>\n",
       "      <td>190</td>\n",
       "      <td>915</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>radare2</td>\n",
       "      <td>43</td>\n",
       "      <td>60</td>\n",
       "      <td>141</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "  commit_project  commit_count  file_count  method_count\n",
       "0          linux          1029        2007          4303\n",
       "1    ImageMagick           171         256           512\n",
       "2     tensorflow           156         340          1045\n",
       "3     phpmyadmin           126         242           222\n",
       "4        tcpdump           101         344           299\n",
       "5         FFmpeg            88         104           213\n",
       "6        php-src            61         129           454\n",
       "7           MISP            54          87            98\n",
       "8      WordPress            47         190           915\n",
       "9        radare2            43          60           141"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df_meta = df_commit_freq.merge(df_file_freq, \n",
    "                               left_on='commit_project', \n",
    "                               right_on='file_project').merge(df_method_freq, \n",
    "                                                             left_on='commit_project', \n",
    "                                                             right_on='method_project')\n",
    "df_meta = df_meta.replace(np.nan,0)\n",
    "df_meta['commit_project'] = df_meta['commit_project'].str.split('/').str[-1]\n",
    "df_meta = df_meta.drop(['file_project','method_project'], axis=1)\n",
    "df_meta[['commit_count','file_count', 'method_count']] = df_meta[['commit_count','file_count', 'method_count']].astype(int)\n",
    "df_meta=df_meta.sort_values(by=['commit_count','file_count','method_count'], ascending=False)\n",
    "df_meta.head(10)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Ordering the projects on the basis of #commits, #files and #methods separately in a table. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>commit_project</th>\n",
       "      <th>commit_count</th>\n",
       "      <th>file_project</th>\n",
       "      <th>file_count</th>\n",
       "      <th>method_project</th>\n",
       "      <th>method_count</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>linux</td>\n",
       "      <td>1029</td>\n",
       "      <td>linux</td>\n",
       "      <td>2007</td>\n",
       "      <td>GeniXCMS</td>\n",
       "      <td>14235</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>ImageMagick</td>\n",
       "      <td>171</td>\n",
       "      <td>GeniXCMS</td>\n",
       "      <td>1930</td>\n",
       "      <td>linux</td>\n",
       "      <td>4303</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>tensorflow</td>\n",
       "      <td>156</td>\n",
       "      <td>kanboard</td>\n",
       "      <td>698</td>\n",
       "      <td>exponent-cms</td>\n",
       "      <td>3048</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>phpmyadmin</td>\n",
       "      <td>126</td>\n",
       "      <td>CycloneTCP</td>\n",
       "      <td>611</td>\n",
       "      <td>Ilch-2.0</td>\n",
       "      <td>1427</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>tcpdump</td>\n",
       "      <td>101</td>\n",
       "      <td>X2CRM</td>\n",
       "      <td>594</td>\n",
       "      <td>arangodb</td>\n",
       "      <td>1224</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>FFmpeg</td>\n",
       "      <td>88</td>\n",
       "      <td>exponent-cms</td>\n",
       "      <td>445</td>\n",
       "      <td>kanboard</td>\n",
       "      <td>1169</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>php-src</td>\n",
       "      <td>61</td>\n",
       "      <td>Ushahidi-Web</td>\n",
       "      <td>402</td>\n",
       "      <td>tensorflow</td>\n",
       "      <td>1045</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>MISP</td>\n",
       "      <td>54</td>\n",
       "      <td>wityCMS</td>\n",
       "      <td>372</td>\n",
       "      <td>moped</td>\n",
       "      <td>950</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>WordPress</td>\n",
       "      <td>47</td>\n",
       "      <td>tcpdump</td>\n",
       "      <td>344</td>\n",
       "      <td>WordPress</td>\n",
       "      <td>915</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>radare2</td>\n",
       "      <td>43</td>\n",
       "      <td>tensorflow</td>\n",
       "      <td>340</td>\n",
       "      <td>X2CRM</td>\n",
       "      <td>790</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "  commit_project  commit_count  file_project  file_count method_project  \\\n",
       "0          linux          1029         linux        2007       GeniXCMS   \n",
       "1    ImageMagick           171      GeniXCMS        1930          linux   \n",
       "2     tensorflow           156      kanboard         698   exponent-cms   \n",
       "3     phpmyadmin           126    CycloneTCP         611       Ilch-2.0   \n",
       "4        tcpdump           101         X2CRM         594       arangodb   \n",
       "5         FFmpeg            88  exponent-cms         445       kanboard   \n",
       "6        php-src            61  Ushahidi-Web         402     tensorflow   \n",
       "7           MISP            54       wityCMS         372          moped   \n",
       "8      WordPress            47       tcpdump         344      WordPress   \n",
       "9        radare2            43    tensorflow         340          X2CRM   \n",
       "\n",
       "   method_count  \n",
       "0         14235  \n",
       "1          4303  \n",
       "2          3048  \n",
       "3          1427  \n",
       "4          1224  \n",
       "5          1169  \n",
       "6          1045  \n",
       "7           950  \n",
       "8           915  \n",
       "9           790  "
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df_merged = pd.concat([df_commit_freq, df_file_freq], axis=1)\n",
    "df_merged = pd.concat([df_merged, df_method_freq], axis=1)\n",
    "df_merged = df_merged.replace(np.nan, 0)\n",
    "df_merged['commit_project'] = df_merged['commit_project'].str.split('/').str[-1]\n",
    "df_merged['file_project'] = df_merged['file_project'].str.split('/').str[-1]\n",
    "df_merged['method_project'] = df_merged['method_project'].str.split('/').str[-1]\n",
    "\n",
    "df_merged[['commit_count','file_count', 'method_count']] = df_merged[['commit_count','file_count', 'method_count']].astype(int)\n",
    "df_merged = df_merged.replace('_','-', regex=True)\n",
    "\n",
    "df_merged.head(10).to_csv(RESULT_PATH / 'vul_projects_10.csv', index=False)\n",
    "df_merged.head(10)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Count of CVEs and CWEs on top 10 major projects"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>projects</th>\n",
       "      <th>cve_count</th>\n",
       "      <th>cwe_count</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>linux</td>\n",
       "      <td>973</td>\n",
       "      <td>53</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>ImageMagick</td>\n",
       "      <td>157</td>\n",
       "      <td>27</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>tensorflow</td>\n",
       "      <td>143</td>\n",
       "      <td>24</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>tcpdump</td>\n",
       "      <td>89</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>FFmpeg</td>\n",
       "      <td>83</td>\n",
       "      <td>17</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>phpmyadmin</td>\n",
       "      <td>67</td>\n",
       "      <td>13</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>php-src</td>\n",
       "      <td>60</td>\n",
       "      <td>17</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>MISP</td>\n",
       "      <td>50</td>\n",
       "      <td>17</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>WordPress</td>\n",
       "      <td>46</td>\n",
       "      <td>14</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>radare2</td>\n",
       "      <td>40</td>\n",
       "      <td>6</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "      projects  cve_count  cwe_count\n",
       "0        linux        973         53\n",
       "1  ImageMagick        157         27\n",
       "2   tensorflow        143         24\n",
       "3      tcpdump         89          4\n",
       "4       FFmpeg         83         17\n",
       "5   phpmyadmin         67         13\n",
       "6      php-src         60         17\n",
       "7         MISP         50         17\n",
       "8    WordPress         46         14\n",
       "9      radare2         40          6"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "cve_freq_query = \"\"\"\n",
    "SELECT fx.repo_url AS projects, count(DISTINCT fx.cve_id) AS cve_count, count(DISTINCT cc.cwe_id) as cwe_count\n",
    "FROM fixes fx, cve cv, cwe_classification cc\n",
    "WHERE fx.cve_id=cv.cve_id\n",
    "AND cv.cve_id=cc.cve_id\n",
    "GROUP by projects \n",
    "ORDER BY cve_count DESC;\n",
    "\"\"\"\n",
    "df_cve_cwe = pd.read_sql(cve_freq_query, con=conn)\n",
    "df_cve_cwe_urls = df_cve_cwe.copy()\n",
    "df_cve_cwe['projects']= df_cve_cwe['projects'].str.split('/').str[-1]\n",
    "df_cve_cwe = df_cve_cwe.replace('_','-', regex=True)\n",
    "df_cve_cwe.head(10).to_csv(RESULT_PATH / 'dataset_summary_cve_cwe.csv', index=False)\n",
    "df_cve_cwe.head(10)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Count of CWEs present at file- and method level data:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "# CWEs: 180\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>CWE</th>\n",
       "      <th>description</th>\n",
       "      <th>cve_count</th>\n",
       "      <th>commit_count</th>\n",
       "      <th>file_count</th>\n",
       "      <th>method_count</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>CWE-79</td>\n",
       "      <td>Improper Neutralization of Input During Web Pa...</td>\n",
       "      <td>635</td>\n",
       "      <td>670</td>\n",
       "      <td>3226</td>\n",
       "      <td>7626</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>CWE-119</td>\n",
       "      <td>Improper Restriction of Operations within the ...</td>\n",
       "      <td>408</td>\n",
       "      <td>403</td>\n",
       "      <td>716</td>\n",
       "      <td>1651</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>CWE-20</td>\n",
       "      <td>Improper Input Validation</td>\n",
       "      <td>382</td>\n",
       "      <td>397</td>\n",
       "      <td>1965</td>\n",
       "      <td>3140</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>CWE-125</td>\n",
       "      <td>Out-of-bounds Read</td>\n",
       "      <td>380</td>\n",
       "      <td>404</td>\n",
       "      <td>1061</td>\n",
       "      <td>2373</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>CWE-200</td>\n",
       "      <td>Exposure of Sensitive Information to an Unauth...</td>\n",
       "      <td>276</td>\n",
       "      <td>314</td>\n",
       "      <td>818</td>\n",
       "      <td>1033</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>CWE-787</td>\n",
       "      <td>Out-of-bounds Write</td>\n",
       "      <td>205</td>\n",
       "      <td>211</td>\n",
       "      <td>537</td>\n",
       "      <td>1486</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>CWE-476</td>\n",
       "      <td>NULL Pointer Dereference</td>\n",
       "      <td>195</td>\n",
       "      <td>198</td>\n",
       "      <td>334</td>\n",
       "      <td>678</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>NVD-CWE-noinfo</td>\n",
       "      <td>Insufficient Information</td>\n",
       "      <td>193</td>\n",
       "      <td>219</td>\n",
       "      <td>664</td>\n",
       "      <td>1134</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>NVD-CWE-Other</td>\n",
       "      <td>Other</td>\n",
       "      <td>165</td>\n",
       "      <td>170</td>\n",
       "      <td>395</td>\n",
       "      <td>768</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>CWE-264</td>\n",
       "      <td>Permissions Privileges and Access Controls</td>\n",
       "      <td>143</td>\n",
       "      <td>148</td>\n",
       "      <td>457</td>\n",
       "      <td>924</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "              CWE                                        description  \\\n",
       "0          CWE-79  Improper Neutralization of Input During Web Pa...   \n",
       "1         CWE-119  Improper Restriction of Operations within the ...   \n",
       "2          CWE-20                          Improper Input Validation   \n",
       "3         CWE-125                                 Out-of-bounds Read   \n",
       "4         CWE-200  Exposure of Sensitive Information to an Unauth...   \n",
       "5         CWE-787                                Out-of-bounds Write   \n",
       "6         CWE-476                           NULL Pointer Dereference   \n",
       "7  NVD-CWE-noinfo                           Insufficient Information   \n",
       "8   NVD-CWE-Other                                              Other   \n",
       "9         CWE-264         Permissions Privileges and Access Controls   \n",
       "\n",
       "   cve_count  commit_count  file_count  method_count  \n",
       "0        635           670        3226          7626  \n",
       "1        408           403         716          1651  \n",
       "2        382           397        1965          3140  \n",
       "3        380           404        1061          2373  \n",
       "4        276           314         818          1033  \n",
       "5        205           211         537          1486  \n",
       "6        195           198         334           678  \n",
       "7        193           219         664          1134  \n",
       "8        165           170         395           768  \n",
       "9        143           148         457           924  "
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "cwe_count_query = \"\"\"\n",
    "SELECT cc.cwe_id as CWE, cw.cwe_name as description, count(DISTINCT cc.cve_id) cve_count,  count(DISTINCT c.hash) as commit_count, count(DISTINCT f.file_change_id) file_count, count(DISTINCT m.method_change_id) method_count\n",
    "FROM cve cv\n",
    "JOIN cwe_classification cc ON cv.cve_id=cc.cve_id\n",
    "JOIN cwe cw ON cc.cwe_id=cw.cwe_id\n",
    "JOIN fixes fx ON cv.cve_id=fx.cve_id\n",
    "JOIN commits c ON fx.hash=c.hash\n",
    "LEFT JOIN file_change f ON c.hash= f.hash\n",
    "LEFT JOIN method_change m ON f.file_change_id=m.file_change_id\n",
    "GROUP BY cc.cwe_id\n",
    "ORDER BY cve_count DESC;\n",
    "\"\"\"\n",
    "df_cwe_result = pd.read_sql(cwe_count_query, con=conn)\n",
    "df_cwe_result = df_cwe_result.sort_values(by=['cve_count'], ascending=False)\n",
    "df_cwe_result = df_cwe_result.replace('\"','', regex=True).replace(\"'\",'', regex=True).replace(',','', regex=True)\n",
    "df_cwe_result[['CWE','description','cve_count','commit_count','file_count']].head(10).to_csv(RESULT_PATH / 'cwe_summary.csv', index=False)\n",
    "print('# CWEs: ' + str(df_cwe_result.CWE.nunique()))\n",
    "df_cwe_result.head(10)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## The proportion of the top 10 major projects at different granular levels:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Proportion of 10 major projects out of the total projects at different granular levels:\n",
      "% CVEs:  31.84\n",
      "% commits:  31.61\n",
      "% files:  42.43\n",
      "% method:  57.84\n",
      "\n",
      "% CWEs at CVEs:  55.58\n",
      "% CWEs at Commits:  57.02\n",
      "% CWEs at files:  55.75\n",
      "% CWEs at methods  41.36\n"
     ]
    }
   ],
   "source": [
    "percent_10_cve = (df_cve_cwe.cve_count.head(10).sum()/df_cve.cve_id.nunique())*100\n",
    "percent_10_commit = (df_merged.commit_count.head(10).sum()/df_merged.commit_count.sum())*100\n",
    "percent_10_file = df_merged.file_count.head(10).sum()/df_file.file_change_id.nunique()*100\n",
    "percent_10_method = df_merged.method_count.head(10).sum()/df_method.method_change_id.nunique()*100\n",
    "\n",
    "# CWEs proportion 10 major projects out of the total CWEs based in file data:\n",
    "# percent_10_cwe_cve = (df_cwe_result['cve_count'].head(10).sum()/df_cve.cve_id.nunique())*100\n",
    "percent_10_cwe_cve = (df_cwe_result['cve_count'].head(10).sum()/df_cve.cve_id.count())*100\n",
    "\n",
    "percent_10_cwe_commit = (df_cwe_result['commit_count'].head(10).sum()/len(df_commit))*100\n",
    "\n",
    "#percent_10_cwe_file = (df_cwe_result['file_count'].head(10).sum()/df_file.file_change_id.nunique())*100\n",
    "percent_10_cwe_file = (df_cwe_result['file_count'].head(10).sum()/df_file.file_change_id.count())*100\n",
    "percent_10_cwe_method = (df_cwe_result['method_count'].head(10).sum()/df_method.method_change_id.count())*100\n",
    "\n",
    "print('Proportion of 10 major projects out of the total projects at different granular levels:')\n",
    "print('% CVEs: ', percent_10_cve.round(2))\n",
    "print('% commits: ', percent_10_commit.round(2))\n",
    "print('% files: ', percent_10_file.round(2))\n",
    "print('% method: ',percent_10_method.round(2))\n",
    "\n",
    "print('\\n% CWEs at CVEs: ',percent_10_cwe_cve.round(2))\n",
    "print('% CWEs at Commits: ',percent_10_cwe_commit.round(2))\n",
    "print('% CWEs at files: ',percent_10_cwe_file.round(2))\n",
    "print('% CWEs at methods ',percent_10_cwe_method.round(2))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## The summary of _CVEfixes_ database"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "#CVEs registered in CVE database : 5365\n",
      "#commits registered in CVE database : 5495\n",
      "#projects registered in CVE database : 1754\n",
      "#programming languages/file formats: 31\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>CVEs</th>\n",
       "      <th>CWEs</th>\n",
       "      <th>projects</th>\n",
       "      <th>commits</th>\n",
       "      <th>files</th>\n",
       "      <th>methods</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>5365</td>\n",
       "      <td>180</td>\n",
       "      <td>1754</td>\n",
       "      <td>5495</td>\n",
       "      <td>18249</td>\n",
       "      <td>50322</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   CVEs  CWEs  projects  commits  files  methods\n",
       "0  5365   180      1754     5495  18249    50322"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data_summary = {\n",
    "'CVEs': df_fixes.cve_id.nunique(),\n",
    "'CWEs': df_cwe_result.CWE.nunique(),\n",
    "'projects':df_merged.commit_project.count(),\n",
    "'commits': df_commit.hash.nunique(),           \n",
    "'files': df_file.file_change_id.nunique(),\n",
    "'methods': df_method.method_change_id.count()\n",
    "}\n",
    "print('#CVEs registered in CVE database : ' + str(df_cve.cve_id.nunique()))\n",
    "print('#commits registered in CVE database : ' + str(df_fixes.hash.nunique()))\n",
    "print('#projects registered in CVE database : ' + str(df_fixes.repo_url.nunique()))\n",
    "print(\"#programming languages/file formats: \" + str(df_file.programming_language.value_counts().count()-1))\n",
    "\n",
    "pd.DataFrame([data_summary]).to_csv(RESULT_PATH / 'dataset_summary.csv', index=False)\n",
    "pd.DataFrame([data_summary])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Plotting of the CVSS severity scores of all CVE records using different diagrams"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [],
   "source": [
    "def show_plot(plot_type, df_plot, x_label, y_label):\n",
    "    df_plot = df_plot.astype(float)\n",
    "    fig, axs = plt.subplots()\n",
    "    if plot_type=='boxplot':\n",
    "        ax = sns.boxplot(data=df_plot, ax=axs, orient='h')\n",
    "    if plot_type=='violinplot':\n",
    "        ax = sns.violinplot(data=df_plot, ax=axs, orient='h')\n",
    "    axs.yaxis.grid(True)\n",
    "    ax.set_xlabel(x_label)\n",
    "    ax.set_ylabel(y_label)\n",
    "    plt.yticks(rotation=40)\n",
    "    fig.tight_layout()\n",
    "    return fig,axs"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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HevWrbN0WWZjjutQiQwkeJDG7du3JyQkhN69exd4/LOtXpyNKlasyJ07d0yvU1JSTM1oWxIdHc3AgQMZN24cr776qqXLKXK7du0iKiqKrl27smTJEvbv38+cOXMsXVaRK1++PE2aNKFs2bI4OTnRunVrm2vRAxw5coQmTZpQrlw5NBoNr732GsePH7d0WWZjjutQiQ0kgOrVqzNu3Dj69OkDPBgvKg2aNm3KsWPHSEtLIzs7mz179tCiRQtLl1Wkbt26xahRo/jwww/p1KmTpcsxi88++4zIyEi+/fZb3n77bUJDQ5kyZYqlyypyrVq14siRI9y7dw+9Xs/hw4epXbu2pcsqcoGBgRw9epT79++jKAr79++nbt26li7LbEJCQrh8+TJXr15Fr9cTGRn51NehEjeG9DCVSoWXlxfwoPloi+NFj1KxYkXGjh1L//790el0dO/eneDgYEuXVaTWrVtHbm4u8+bNM32td+/epj8+RMkREhLC0KFD6du3LzqdjhdffJFu3bpZuqwi16xZM86dO8drr72GWq2mbt26vPnmm5Yuy2wcHR2ZN28eo0ePJjc3l5YtW9K+ffun2meJX6lBCCGEbSgdTQohhBBWTwJJCCGEVZBAEkIIYRUkkIQQQlgFCSQhhBBWQQJJiGIUExPDG2+8QVhYGJ07d2bo0KEkJCQUy7GnTp3K0aNHAZg2bRpxcXGPtf1PP/1Er1696NKlC506dWLMmDHcvn3bHKWKUkqmfQtRTPLy8mjevDnr16833Rj67bffsnjxYvbt24e9vX2x1RIaGsonn3xS6Bs3k5OT6dKlC19//TVVqlQBYOXKlRw8eNAm1xgUllGib4wVoiTJzs5Gq9Vy//5909e6dOmCm5sber0ee3t79u/fz8qVK9HpdDg5OTFp0iRCQkJo1aoVy5YtMwXI2LFjef755+nbty8rV65kz549GAwGqlSpwnvvvUfFihV544038PDwIDExkT59+rBnzx769evHr7/+SkpKCuPHj+df//oXw4cP59ChQ7i7u6MoCu3bt+eTTz4hMDDQVGd6ejo6na5A7QMGDOC5554zvV61ahU7duzAwcEBPz8/5s2bh7u7O8uXL+f777/H3t6eZ599lunTp1OhQoU/1PfKK68we/ZsLly4gE6no0mTJkycOBEHBweWLFnC3r17UavVeHl5MXfuXJtcLqvUe6qHVwghHsv69euV4OBgJTQ0VBk/fryyfft25f79+4qiKMrly5eVzp07K2lpaYqiKMqFCxeUF198UcnKylI++eQT5f3331cURVEyMjKURo0aKffu3VN27NihvPPOO4pOp1MURVG2bNmiDB06VFEURXn99deV8PBw07Fff/11Zffu3YqiKEqrVq2Us2fPKoqiKP/85z+VzZs3K4ry4NlMPXv2fGTtc+fOVWrXrq106NBBmTp1qhIZGWk67o8//qi8/PLLSkZGhqIoijJnzhxlxYoVSkREhNKrVy8lKytLURRFWbJkiTJ48OBH1jd58mRl06ZNiqIoSn5+vjJ+/Hhl9erVys2bN5X69esrubm5iqIoyrp165S9e/c+4W9AWDNpIQlRjAYNGkSPHj04ceIEJ06cYM2aNaxZs4aIiAiioqJISUlh4MCBpverVCquXbtGt27d6N69O5MnTyYyMpJWrVrh7u7OgQMHiI2NNS3FY3wej1HDhg3/tqZ+/fqxcOFC+vXrx9atW/90eabJkyczfPhwjh8/zokTJ1iwYAH//ve/+fzzzzl27Bjt27fHw8MDgPDwcADGjBnDa6+9houLCwD9+/fn008/JS8v7w/1/fTTT8TGxhIREQFATk4O8GCprMDAQF599VVatGhBixYtbH6F9NJKAkmIYhIdHc3p06cZOnQorVq1olWrVrz77ruEhYURFRWFwWCgSZMmfPzxx6Ztbt26hbe3N/b29gQFBfHTTz/x9ddfmxZhNRgMpnXi4ME41d27d03bG4PgrzRt2pTs7GyOHTvGyZMnH/no7X379pGRkUG3bt1o164d7dq1Y+zYsbz00kucO3cOe3v7Aqvs37t3j3v37v3hEQUGg4H8/PxH1mcwGPjkk0/w9/c37UOlUmFnZ8fmzZuJjY3l2LFjzJkzhxdeeIFp06b97bmJkkVm2QlRTMqWLcvKlSs5efKk6WupqalkZ2dTs2ZNGjduTFRUFJcuXQLg4MGDdOnShdzcXAB69uzJmjVryMnJMT1upVmzZkRERJCZmQnAJ598wsSJE/+2Fnt7e1MwqFQq+vbty9SpU+ncufMjn3Lq6urKokWLuHjxoulrSUlJODo68swzz9C0aVP27t1rqmPp0qVs2LCBZs2a8fXXX5vGnv7973/z/PPPF3iIplGzZs3YsGEDiqKQl5fHP//5TzZv3kx8fDydO3fG39+f4cOHM3DgQM6fP//3P3BR4kgLSYhi8uyzz7J8+XIWL17M7du3cXR0xN3dnVmzZlG9enUAZs2axbvvvouiKDg4OLBy5UpTKyI0NJT333+fYcOGmfbZo0cPkpOT6dmzJyqVikqVKhVYIf3PtGnThrFjx/LBBx/QrFkzXn31VebPn0+vXr0e+f7GjRszffp0Jk2ahFarxd7engoVKrBixQo8PDxo2bIlFy9eNHX3BQQE8K9//QsXFxdu3bpFjx49MBgM+Pn58eGHHz7yGFOnTmX27NmEhYWh0+lo2rQpQ4cORa1W06FDB7p164aLiwtOTk7SOrJRMu1bCMH333/Pjh07WLt2raVLEaWYtJCEKOXeeOMN7ty5w9KlSy1diijlpIUkhBDCKsikBiGEEFZBAkkIIYRVkEASQghhFSSQhBBCWAUJJCGEEFZBAkkIIYRV+D95We7MriwYTgAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAaQAAAEUCAYAAABkhkJAAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8rg+JYAAAACXBIWXMAAAsTAAALEwEAmpwYAABzlklEQVR4nO3dd3gU5drA4d9s382mV1IIHaQFpUhHulQbUo+NYkH97IqCihzpCgoIYgUPKiIqClIFpASQIh0hIZACCel1k+3z/RGzgrQkJGwS3vu6ckE2U55JdueZt0uyLMsIgiAIgpsp3B2AIAiCIIBISIIgCEIVIRKSIAiCUCWIhCQIgiBUCSIhCYIgCFWCyt0BCGXjdDoxmUyo1WokSXJ3OIIgCKUmyzI2mw0PDw8UisvLQyIhVTMmk4mYmBh3hyEIglBujRo1wtPT87LXRUKqZtRqNVD8B9VoNKXe79ixYzRv3ryywrrpxPVUbTXteqDmXZM7rsdqtRITE+O6j/2bSEjVTEk1nUajQavVlmnfsm5f1Ynrqdpq2vVAzbsmd13P1ZobRKcGQRAEoUoQCUkQBEGoEkRCEgRBEKoEkZAEQRCEKkEkJEEQBKFKEAlJEARBqBJEQhIEQRCqBJGQBEEQhCpBJCRBEAShShAJSRAEQagSREISBEEQqgSRkARBEIQqQSQkQRAEoUoQCUkQBEGoEkRCEgRBEKoEkZAEQRCEKkEs0CcIwi1FlmXS09PJysoiPz8fhUKBv78/gYGBeHh4uDu8W5pISIIg1Hhms5k9e/awd+9ejh49Rk5O9hW3i4ysw+23t6Jjx440adLkqiubCpVDJCRBEC6RmZnJyZMnOX36NBkZGeTk5GC1WlGr1Wg0Gnx8fPDz8yMgIMD15evri6enJwpF1WoFiI2NZe3atezYsROLxYxSrUfSB6ENqYdC7YGk1IIs47QX4rTmcy4jlcSff2HVqlXUCg2lb58+9O7dGy8vL3dfSpmZzWbS0tLIy8vDbDbj7+9PcHAwBoPB3aFdlUhIgiBw9uxZoqOj2Rkdzflz5wCQJAVKjQFZoQVJCbITSXYgO8w4bGZAvuQYkiSh0+vR6/QAeHh4oFKpUKmUqFQqtFotWq0WvV6Pt7c33t7eBAUFERISQlhYGEajsUKuxWw2s3PnTn5du5bTsbEolCqUxgj0wXVRGgKvWOpRuv7XDNlhw56fRHrOWZYsWcLXX39Djx7dqVu3boXEV5kSEhLYuXMnhw8fJiYmBofDcdk24RERdOzQAV9fXzdEeG0iIQnCLSonJ4dt27bx22+biY8/C0ioDIFog25HaQhAofVBUiivuK8sO5HtRci2Ipz2QmS7Gdluxu60keewg+wgL8eJLJtBdrq+JBzgtOG0m3E67Jcc08fHl7p161C/fn3q1atH/fr1CQkJKVWpy2azcfjwYXbv3s32HTswFxWh1HqjDb4DtXcdJKWm1L8XSalG7VMPtU89HOYcbNkxbNz0G7LTwfbtO+jfvx933nknOp2u1MesTBkZGWzfvp3NW7aQmJAASCj1fih9GqLW+iKptEiSylUKvJCZyooV3wMyv//+O4MGDaJTp06oVO5PB+6PQBCEm6agoIB9+/axbds2Dh48iNPpRKX3Qxt8Byqv2ihUpbvJSpICSe0Bag+unLKuT3bacNoKka0FOK15FFhyOfpXPIcOHUaWnQBotFpqR0QQGhpKSEgIRqMRg8GA3W7HZDKRkZFBXFwcZ8/GY7NZUSjVKDxC0QfVR6m/cmmoLJQ6H5S12iEHRWHLOcup06c58d576HQ6OnToQJs2bWjZsiU+Pj5lOq7D4cBisSDLMkqlErVajVJZut+k0+kkKSmJAwcOsHfvXo6fOAGyjFLvf82/o+voAc2Q7RZsefGcjj/Ne++9xxdffsl9995Lnz593FqlJxKSINRQsiyTm5vL2bNnOXHiBMeOHePEiRM4nU6UGgMq38aovOug1Hq7JT5JoS4+t9YbCPsnbqcDpyUXpyUHhzmbsyl5xCf9id1i4t/VhAqlBknrg8KzDnqPEJSG4KuW6m4oVqUWjX8T1H6NcRSmYcuNZ9uOaLZu3QqAn58/4eHhBAcHuaombTYbFosFk8lEbm4uObm55OXmUWAqwGG3X3YOrVaHh4cH3t5eeHt7YzQa0Wq1aDQarFYrhYWFpKWlk5iYiM1mBYoTpsa/KWrvOig0nqW/HpUWjV9j1L6NcBSkkJt1ks8//5yvv/6aXr160b9/fyIiIirml1cGIiEJQhXmdDoxm80UFhZSVFTk+rJYLFgsFsxmM2azmaKiIkwmEyaTiezsbDIzs0hJSaGw0PT3kSSUOp/iJOQZjkLnV6E9yGRZxpZ9GntBMsiX32xv+PhKPQq9HpBBlkECUFB8CTJOczZWczZk/nX9YzlsyE4bkkKNpFSXPyi1NwqlHdlpJSu3gKyc43D0aHF8yIBEcYAl/yqQJAVIaiS1FgBJUiJpPFFofXDKdvIcFnLTLXAhCUm2ITsdIDtAUiIp1MhKLQpjHXQ6H5QewSjUN9ZNXZIkVJ6hqDxDcRRlYs2K4ddf17JmzRrq1qtH1y5daNOmDbVr174pHVZEQhKqBVmWcTqLq3GcTic2mw2z2Ywsy8iyzLZt21xPqyXbl/a4V/r+4n+v9v/rnevf2/z7y+l0ur7MZjNKpRKHw3HJV8k1l5qkABQgScU3O7WxuMSgUIMk4SjKwFGUUbZjloLTVoRsK6jw41YGnU5Hn3592LhxI+bCnEo809/J8+//XvTPxVuANQ+nJReFWv/PDyQFsqS9ZOoCGUB24rRk47RkY8s9e0PRqb3rofb5p6OGUu+PPqwDTvvt2HPjSUxJYunSpSxduhSDwYPGjRsRERFBeHg4fn5++Pj4ULduXTSa0rfPXY9ISDeJw+EodR1xaRw7dqzM+xw4cKDCzl/RDh06xKpVq9wdRtUgKYufiCUNkkrherpGkpAue+r+51+3Dplx2tx48rLp06cP48aNQ5ZlVq9e7e5wijltgP66m90MCpUOjX8TNP5NcNpMOExpWAuSOXjwIAcPHrxk21atWnHvvfdW2LlFQroJShouExMTWb16Nd7e3vTp04eAgIByF4ObN2+OVqst9fYHDhygdevW5TrXzRAUFMShQ4eIj493dyjuJxdX08j83UaiUCMplMiSChTFVTfFVTgqUKiQ/v5CoUZSapCUOhQqHZLao1LaU67Emh2L5ULVfeC52MaNG5FlmU2bNrk7FBdNYAs0vg3cHYaLLMs4zVnY8pKQi9KwF10+kFihUNCzZ88y3VcsFss1H6ZFQqpEsiwjSRKSJHHo0CEmT57M+PHjWbp0Kdu2beO///0vISEh7g6zSoiIiGD+/Pml3r6qJ9jrcTqdWK1WV/vPgQMHiIyMxGQyUVBQQEFBAYWFha52ocLCwuKvoiKKCouwWIowm81YiizYrNarVhuqtJ7Iak+U+gCUhgCUen8kqeKTlNqn+GZqz6+cNqSKZHXYWLN+C5JCh9JQ+o4A1yLLMjjtf/cOLGnnKim5lpRwS6pSLyrKSipUnqGofer/cwyH5e8vK7LsAKfD9SAiqXQoNJ7FbVGVwGkvwpYdhyPvLA6rCaVSyW233Ubz5n1o3Lgx4eHhBAYGVmhtz8VEQqok/66iO3DgAE888QRNmzbFZDIxbtw4bLbqU80hVCyFQoFOp0On0+Hj40OtWrVo0aJFuY4ly7Kr40N+fj45OTlkZWVx4cIFzp07x+m4OFKSjxSfV6lB4RGCyjMClTG0wkpQkiSh8W2IxrdhhRyvhCw7cFoLiruG20zIThuyw1b8oFdSGtT5oNB6V9pN+opxOSzY85Oxmy4gF6XjtBVefdt/fS8plCiUf5dyJQl71l/YMo7hdFj/aXO6BklSoNR6IxmCURlr/T3Y98au3WHOxpp5Ekd+ErLsJCqqFT16dKddu3YVNmC5NERCqgQlVXQACxYsIDg4GIDVq1fz+eef88Ybb9CuXTs6d+7MRx99RFRUlDvDFao5SZLQ6/Xo9Xr8/f2vuE1ubi4nTpxg79697NnzBwXnE1GoNCiNEai966LQ+7t93jbZYcVhycFpzsFhzgJLLg5LrmtMUgmVSoXj784gJSSFEoU+EJVneHEvwlKOpypTfLITR0EKtpwzOEwpyLITT08vWrVvTYMGDVylB51Oh0ajuazbd15eHnl5eeTn52M2m7FarcXjwFQq1Go1Hh4eGI1GvLy88PLyumK374yMDBISEoiJieXEieMUZZ1Eodb9/XesU6bek7Is4zClYMuKwW66gFaro/+ggfTv35+wsLDrH6ASiIRUCUreEDNnzuT06dN8+umnbNu2ja+//prp06fTrl07zGYzkZGRBAYGujla4Vbg7e1Nhw4d6NChA8884+Dw4cNs3bqVXbt2UZgTh1LridKzNirPiL9LG+VLTv9UXTkumaFBRganA1m2g8OG7LDgtJuRbSactgKwFeCwmlzH8fLypkHT+tStW5fIyEhq1apFcHAwRqMRtVrtKhVmZGRw5swZYmJi2LPnD9Iu7Mea+idKYxhqn/ooPYJvONHKDgvWnDPYs0/jtJnw9vah+z2D6datG/Xq1XPb/H2FhYUcOnSIbdu2sXfvXgqzY//5OxpDUeh8Lys5ybKM05KLPf8cjrwEHNZ8fHx8Gfzww/Tr1++mloauRJJL2z9WuK6SNiOA9PR0pkyZQmpqKitWrACKE9SZM2fQaDScO3eOfv368fjjj5fpHCWNgjWtU0NZieupGIWFhezatYvNmzdz/Pjx4tK9xoik80ep9y+egFSlc81lJ8t21zRBTlshsr34S/o7wTgdZauGNho9qVWreC67yMhIIiMjqV+/Pn5+fmW+FlmWiY+PZ8uWLWz67TdMBQUotZ6ovBug9qlTPJFqGTjM2cVjq/ISkJ12IiMjGTFiBO3bt6+0NpTyKigoYPfu3WzdupVjx44hyzIKpRpJ4w1KDZJChWwvBJsJh60ISZIIj4hg+LBhdOjQAbX6BsZjlcH17l8iIVWAixNRfHw8OTk5hIeHk5GRwUcffUTt2rV55ZVXADh69ChZWVn4+vrSsmXLMp9LJKRi4noqXnZ2Nnv27OHPP//kr5Mnyc3Jueb2KpUKf/8AAgMDXONSDAYDer2e1NRU6tWrh1JZPLGqUqm84uSqlTUfnM1mIzo6mjVrfuXUqZNICgVKj1BUXrVRGoKuWKVXUnpwmC5gz0vAYc5GpVbTo3t3Bg0aRGZmptv/RqWRk5PDsWPHOHLkCMnJyeTm5lFUVERgYAAhISE0adKEdu3acebMmZt+Pde7f4kquwpQkox++uknPv30U8LDw9HpdLRq1YqHH36YL7/8km+//ZYRI0aUu+FaECqbr68v/fr1o1+/fsiyTFZWFpmZmVddfsLLy+uq1WHuTrBqtZq77rqLu+66i7Nnz7J582a2bt1K3vldACi1XqAyFE+6KsvIjqLiakObGYC69erRt88wunbtiqdncU+8zMxMt11PWfj4+NC5c2c6d+7s7lDKTCSkG3BxyejkyZOsWLGCpUuXEhgYyPr169m7dy9BQUE88MADzJkzh+bNm4uEJFQLkiTh7+9/1U4S1UndunUZO3Ysjz32GDExMRw/fpyTJ0+SmZlJbl7xirGBASEEBQXRvHlzoqKiCAoKcnfYtySRkMrp3926PTw88PLyco0H6dy5M9HR0aSkpPDII4/g4eEhkpEguFHJmJrbbrvN3aEIVyESUjmUdOvOzs5m/vz5NGrUCJ1Oh6enJ4mJiXh6emI0Gqlfvz65ubloNBrat2/v2tfd3WsFQRCqIpGQykGSJOLj43n66afp0qULRUVF3HfffWRmZrJixQqCgoIIDw/nq6++Ytq0aZftKwiCIFxOJKRScjqdl4w3iImJoXv37rz88stYrVZXKUihUOB0Ojlx4gQLFy6kSZMmboxaEASh+hAJqRQubi8q6bJdVFTEli1bePnll9FoNGRlZfHTTz8xaNAgoqKiXPv8O5EJgiAIVybulKVQkozefPNN3nnnHZYuXUrPnj1p1KgR7777LgB6vZ5jx45h/3slSKVSWTw4TSQjQRCEUhElpFJwOp288sor+Pv78+yzz5KTk4PJZOLJJ59kxowZPPPMMyQmJtKvX79Lxl6I9iJBEITSEwmpFBQKBeHh4dSpU4eVK1dy7tw5jh49SlBQEF988QWnT5/GbDa7Zl4QPekEQRDKTtQnlYLD4SAkJIQ1a9aQnZ1N3759WbZsGWq1mszMTBo1aiSSkSAIwg0SJaTrKBlzNGLECEaMGEF2djYZGRksWbIEWZbx9va+ZHuRjARBEMpHJKTrKEkwsiyTk5PDRx99RGxsLCEhISxevNjN0QmCINQcIiFx+RijK5EkCV9fX1555RXMZrOrZCS6dQuCIFSMW/5OWtI1OykpiS1btnDkyJErbudwOADQarUUFRVdsq8gCIJw4275u6kkSezevZuxY8eSmJjIE088wZIlSygsLHRt43Q6XWOR1qxZw1NPPYXZbBbtRYIgCBXolkxIJTNyO51OCgoKWL58OXPmzKFnz57o9XpatmzpSjY2m81VClq8eDHr16/n22+/rbSFxQRBEG5Vt1xCcjgcrmQjSRJGo5GIiAi+//57nnvuOd5//318fHwYPnw4ZrPZtbTv5MmTycrKYt68eSIZCYIgVIJbqlNDSdWbw+Fg4cKFaDQaHnvsMfLz89m3bx+fffYZoaGhxMXFERkZiVKpxGq18uKLL9KxY0dGjhzp7ksQBEGosW6phKRQKMjOzmb8+PF06dIFKE5STz75JCdPnuSLL75ArVazbds2Hn74YdRqNfn5+bz++uuEhYW5OXpBEISarcYnpH93y96/fz/h4eGMHz+eH3/8kXnz5qHVahkzZgxWq5XTp08zZcoU2rRpA4Cnpyeenp7uCl8QBOGWUaMT0sXJ6NSpU9SpU4eWLVuyYMECunfvTocOHWjQoAHR0dHUrVuXwYMHu/YVUwAJgiDcXDU6IZUkozlz5rBhwwZat25Nly5d+Oabb7BYLCiVSry9vTl58iTZ2dnAP0lMJCNBEISbq8b3svvggw9IS0vjiy++ID8/n5UrV7Jv3z4KCgp45JFHGDZsGBqNhkceeQRADHQVBEFwkxpTQioZWwT/zD9XUFDAmTNneO6550hJScHf35/mzZuzZs0ahg4dyrx58zh//jwdOnRwHUOUjARBENyjxhQHSmZOkCSJ1NRUCgoKMBqNDBkyBIDo6GhGjhxJ06ZNOXXqFPPnzyckJEQkI0EQhCqiRiSkgwcP8txzzwGwefNmnn76aV599VVmz55NZGQkhYWFrFu3jkaNGhEbG8udd97Je++9h0ajcR1DJCNBEAT3qhFVdr6+vvj4+PDkk08CMHfuXM6fP8++ffuYN28eo0ePpnHjxgwfPhy9Xs/8+fMxGo1ipm5BEIQqpEbcjevUqcPo0aNxOp2YTCYiIiJo3749AwYMQK1Wk5eXx2uvvcaoUaP48ssvRTISBEGogmrMHblRo0aMHTsWm83GunXrAKhXrx75+flIkkRoaCiDBg0CxBpGgiAIVVGNqLKD4u7arVq1YsyYMXz33Xc4HA78/f1JSkrCx8fnsm0FQRCEqqVaJqSr9YjTaDR06NCBxMRE3nrrLdq1a8eMGTNo0qSJG6IUBEEQyqLaJKQlS5ag1+tp0KABrVu3vmq1m9FoZODAgYSEhNCtWzfRXiQIglBNVIu79IQJE9izZw/5+fmMGzeOrKysqyYYWZYJDg5mwIABIhkJgiBUI1X+Tn369GkuXLjAxx9/zNixY2nfvj2nTp0iLS3tsm1LqvJSUlIYP3482dnZIhkJgiBUE1W+yi4/P5+mTZtitVr59ttv2bFjByqVirS0NJ5++mm6dOmCw+FAqVQiSRIHDx5k5syZTJw4EV9fX3eHLwiCIJRSlUxIF1eztWzZkttvvx2AO+64gx07duDj48MHH3zAypUr6dKlC0qlEoA1a9bwzTffsGDBAgICAtwWvyAIglB2Va4+6+JktGPHDqKjo10/a9GihasL90MPPYRarcZqtQIwb9481q5dy5IlS0QyEgRBqIaqXAmpJBm99dZbnD9/Hh8fH8LCwqhfvz5xcXHExcXh5+fHl19+SVhYGBqNhqysLBo0aMCzzz4r5qQTBEGopqpMQrp4bNG2bdvIycnh888/58iRI6SkpBAbG4ter2f//v0kJCTQvHlznn32WaB4Lrv+/fu7M3xBqFQmk4nk5GTMZjNmsxkArVaLTqdDr9ej1+vR6XRoNBpUKpXozCNUS25PSCXrGEmShMlkwsPDg/DwcE6dOsWYMWNQq9UoFAri4uJ45ZVXeOONN1xLS5TsL0pFQk1jNpvZv38/u3btIubUKVKv0Kv0WlQqJRq1Bq1Wg6+fH4GBQdSqVYtmzZrRvHlz1+dHEKoStyekkmSye/duPvroI9q3b88999zDa6+9hslkolWrVkRERPD+++8TExNDr1690Ov1l+0vCDVBQkICP//8Mzu2b8dssWDUKqntqaJ5HSMBeiU6lQK1svg9b3PI2JwyFruM1eHE6pSxO8HulF1fVoeF/OzznE09x4H9dlatWoUkSTRr1oy7776bjh07olar3XzVlSM/P5+UlBQyMzPJysrC4XC4SpV16tQhPDzc1SFKqBrclpAu7rywfft23nvvPd566y00Gg3+/v74+vpiNBp59dVX8fX15eDBg8yfPx9AvImEGkWWZc6cOcPPP//MwYMHUSsVNA/Q0CLIlzreahQV9NBld8qcy7dxNsfKkbiTvPfeMbw8jQy+514GDhyIh4dHhZznZrLZbKSnp3PhwgVSUlJISkoiKSmJxIQEcnJzr7mvTqulabNmdO/enQ4dOqDVam9S1MLVuC0hlSSjw4cPYzQa6d+/P+np6Rw7doyFCxdy9OhRZs+eTVRUFDk5OXz99deo1Wox84JQY9jtdvbs2cMPK1dyOi4Oo1ZJj0gP2tQyYFBX/HtcpZCo462hjreGbrU9OJNj5Y/kIpYtW8ZPP/7IPffey+DBg6tUYjKbzaSkpHDu3DkuXLhAeno6GRkZZGZkkJmZQV5+gavaH0CrUhCgV1LHoCTQz4i/XomXVomnRoFSkrA5Zcx2mQsFNs7l24g9cYQ///wTg15P7z59uO+++/D393fjFd/a3JKQStp9Tp48yaJFi+jRowfJycls2LCBoUOHMmTIEH788UfS09MZNWqUaz+RjISaICUlhc2bN7Nxwwayc3Lw06sY2MCTqGA9asXNqYJWSBINfLU08NWSnG9jW6KJb775hp9XreKee+9l0KBBN72dSZZlzp8/z9GjRzl16hQxp05y7nzyJQnHoFbipVXgqZaob1Di5WPAR6fER6vET1+ceK5Xje+thWAPFVHBepyyTHyujT8vFLH6l1/49dc19OzZiyFDhhASElLZlyz8y01NSP/ugKBWq9HpdHTu3JmhQ4e6it/p6ens2LGDrl27XrKvSEZCdVRUVERMTAxHjx5lz+7dJCQmIgEN/LTc3dSHhn6aCquWK49QTzUjmvmQXPBPYvrhh5X06NGTQYMGERERUWnnzszM5NChQxw6dIjDhw6RnZMDgIdGSahRSdcIA4EGFQEGJX46FRplxf6eFJJEPR8N9Xw0ZJsdRCeZ+G3TRjZt2kT37t0ZOnQooaGhFXpO4epuSkIqKdlIkkRycjKzZ89m8uTJ1K9fn8jISKZNm8aCBQtYtWoV0dHRxMXF8fLLL9O2bVvXMUTnBaGqczgcpKWlFbdhJCaSkJBA/NmzJCQm/v0wBrW9NPStZ+Q2fx0+uqrVFhpqVDOiqQ8pBTb+SC5k44b1rFu3jrp16tChY0fatGlDnTp1yt0JwuFwcO7cOU6fPs3x48c5dvQIKRdSgeIEVMdLRacGntT10eCnU970z7yvTsnAhl50re1B9DkT237fwpYtW2jbti2DBw++pKQmVA5Jvom/5dWrV5OWlsbs2bO5//77adq0Ka1bt2bjxo089NBD6HQ6lEolJpMJPz8/0aX7CiwWC8eOHaN58+ZlaoQ9cOAArVu3rsTIKofD4SAzM5P09HTS0tLIzs4mNzeXs2fP4u3tjc1mQ6lUunpPeXt74+vri5+fH8HBwQQGBqLT6So0JqvVSnJyMklJSZw7d664IT0xgfPnk7HZ7a7tvHUqAvUKQo1qIrzUhHuq0ZexbUiWZfalFBGTZcHmvLGPqsXuxGyX0akktKrrx+F0QoHNQaFNxuL459w6nQ6tVotarXYNyyh54Cy5nRQWFqJSqbDb7dhsNqwWCxar1fVzhQRapYROJaFTKdAoJCjDR12tkGjsp6VNLX2l3SPyrQ72JRdxINWMyerA29uL7t170KlTJxo0aIBK5fZOyjfEHfeE692/btpvdMmSJSxfvpxXX32Vl156iebNmxMdHc3zzz+Ph4cHbdq0oVOnTkDxgD/RXlQzbNmyhU2bNl32uizLOBwOnE4nDocDu93uunkVf1mxWKzYbLYrHlcpFZeaJUD++3hOufj/l22rVKJWq9FoNKjValQqFSqVCqVS6ZqUt+RLluXiY/0dl8PhuCgmGxaLBftFSQeKOwuoFaBXSHjplagVEmqFhEIBNqdMQp6VhDxruX5/+RYHWWZnufb9N51OR5++fdi4cSNmk7ncx7l4cG55OWUosssU2WWgfNd3OtvK7vMmPLWVW9L01ynQK8FkymfVqlWurvMlA5I1Go1rQHLJe6okQV9NSWIuea+VvO+u9HXx9ldSmvNc6RihoaFIkuSKt+SzUXI9F39mNBrNTbkf35SEZLPZOHz4MJMnT6Z9+/b06NEDh8NBeHg4DRo0YOXKlRw8eNCVkKDmLTNeMiN5RTl27FiZ9zlw4ECZ9zl58iTLly8v8343SqOUUEug1ypQSRIqRfGNX6mQiidgvMpnUJbBIcs4/jUex26zUGg1Yy/nvV0C1EoJrQI8tIripKMsTjyVWYi/uGRyo/r06cO4ceOQZZnVq1dX2HHdyeKQ8azkc0gSeGgUeGgUxYnU5sTikLFYisgsLKzks1eehIQEdu/efUPHGDJkCM2bN6+giG5SQlKr1fj5+XH48GGioqLQ6/VER0fz6aefsmTJEnr16lWjR47LsoxSqSQxMZHVq1fj7e1Nnz59CAgIKHfivVlVdh4eHqxYsQKns2Ke0ktPwlOnxEerwEerxEdX/K9Ro8BDrcCgVqBSSCik4lKRzSFjdciYbE4KrE7yrA5yzE5yzA5yLQ5yrTIWs/26Z70ameInUS+tEj+dAn99cUN7oEGFv77iG9tL7Esu5Ne4/Ao51saNG5Fl+Yol1urqrkgjbWsZbsq5ZFkmpcDOqSwLSXk2zhfYuXKZ/NZxxx130KJFi1JvX1JldzU3rcquY8eO7Nq1i61bt9K/f3+sViuhoaE4HI4aOw1QyfVIksShQ4eYPHky48ePZ+nSpWzbto3//ve/Vb5raZMmTfj5558r9Rxms5nc3FxycnLIyMhw9bRMTU0lOfk88WlpWCxlr/JSKBQE+PsRVDuYBkHF7Un+/v74+fnh4+OD0WjEYDCg1WpdVS0lVYcWi4WCggLy8vLIzs52xZWcnEzy+XOcOJf+z7RXgI9eTYBOIsDwT6IKMqjQlaKt5lra1CqeleRUhbQh2dix8Vd8VBJa7zJ0TJDB7JAx251Y/078ZS24qRTFpVyNUkKrkNCqiku75eVqQwrRX3/jG5RjdrD/QiHH0q3kmO1IkkRk7Qi6t29KgwYNCAkJITg4GF9f3woZXFtShV3yb0n1cYmL75MlD7Ql95mLlTxEOp3Oy6oFJUni2LFjREVFoVAoXNXaJdXZ7qqhumkJqUePHmRlZfHLL7/wyy+/cOHCBWbMmIFGo3FtU5OS0b+r6A4cOMATTzxB06ZNMZlMjBs37qrtI7canU6HTqcjODiYxo0bX/ZzWZbJz88nLS2NnJwccnJy+OuvvwgJCcFms6FQKC7p1ODn54evry8BAQFlriYtaag2Go3XHCBps9lcHRtKOjckJiaw/3wyNts/1Tg+OhW1PJREeKmp7aUh1FNVpi7ekiTRNtRA29CbUwq42Lk8GwcuFHIq20ah1YEkSYSHhdKgYSPCwsIICAjAz88Pg8GATqdDpVK5bp4HDx4kLCyM3NxcUlNTSUlJITExgaTEJPKcxTdXf4Oa2p5K6vloqeujwaipWtX0SXlWdp0r5GSWBZCoX78eD/cfwJ133omXl1elnbfk4aiynTt3rsot1XPTEpIkSQwZMoTevXtz+vRpmjZtisFgqJGdF0qq6AAWLFhAcHAwUNzL8PPPP+eNN96gXbt2dO7cmY8++oioqCh3hlvlSZKEl5fXJTcBX19ft/YaVKvVREZGEhkZecnrDoeD9PR0EhMTiY+PJz4+nlMnT/LX2XSguHtzYz8NzQKKb8LuHH90JU5Z5ni6mT3JRZzPt6HTamnXvhMdOnTgjjvuwGAoXWLMzMy84t/HarUSHx/PiRMnOHr0KMePHeNgavEUP8FGNXW81NT1URPhqcHDTQkqIdfKtkQTZ3KsGD08uP/+gfTv35+kpKRq2VO1Oil1QiqZYfvQoUPEx8czYMCAMo9HkCQJHx8f2rRpA9Tcwa4lJb2ZM2dy+vRpPv30U7Zt28bXX3/N9OnTadeuHWazmcjISAIDA90crVCRlEolISEhhISE0K5dO9fr2dnZHDlyhD/++IP9+/bx54UcfPUqWgfruCNEXylTBZWFU5Y5lm5me1IRGYU2QmvV4omRg+nRo0epk1BpaDQaGjVqRKNGjbj33ntxOBzExcVx6NAhjhw+zJ9//cUfycUlTF+9mloeiuKBsXoVfnol3tri9sOKTuSyLBOXY2VHUiEJuVa8vbx47LFR9O/f3zVsICkpqULPKVyuVAnpww8/JDExkZdeeonx48fToEED9u3bx9SpU2/o5DWpig4urdtNT0/n3Llz5P49wWO3bt3o27cvX3zxBcuWLePcuXP069dPjAK/Rfj6+tKtWze6deuGzWZj9+7drP31V347cYJtSYXcEayjQ5jhpg+WdfydiHb8nYhq145gwshRdOjQ4aY8LCqVSleCKpmtJSYmhlOnTnHq1CniTp/mr6T0S7osqxQSnloVRjV4aRSXTB0UYFDhVYrpg0oU2pwcTTdzMNXMhQIbfn6+jB37MH379q3w8WvC9ZUqIZU83X/33XcMGDCAiRMn8sADD1R2bNXGxZ0X4uPjycnJITw8nKeffpqPPvqI2bNn88orr/Daa69x9OhRsrKy8PX1pWXLlu4OXXADtVpN165d6dq1KwkJCfzwww9s2/Y7+1KKaBagpUO4gVBj5S4JUWhzcjitiP0XzGQW2qldO4LXRoykY8eObq21UKvVNGvWjGbNmrles1gsJCcnk5qa6ppcNSsri8yMDNLT0ziZknlJo79WpSBQryTAoCRAr8JTq8BTo0Qp4VquI6XAxrl8O0n5NhxOmXp16/LMowPo0aNHjV2OozoodZWdXq9n165dDBs2DCiuCxaKlTyN/fTTT3z66aeEh4ej0+lo1aoVDz/8MF9++SXffvstI0aMKFMXSaHmi4yM5MUXXyQqKoqzZ8+yccMGjh7MIsJLQ/NALc0CtBg1N15qcsoymUUO4nOtnM2xEpNlxe6UadSwIY8PGUL79u2rbPW5Vqulbt261K1b94o/dzqdZGVlXdLJJCkpkbMJCRxKzbviPkqFgrp16zLwrub06NGDevXqVeYlCKVUqoTk6+vL5MmTOXbsGB9++CHvvfceQUFBlR1blXdxFd3JkydZsWIFS5cuJTAwkPXr17N3716CgoJ44IEHmDNnDs2bNxcJSbgiHx8fxo4dy4gRI9i4cSObf/uNdXGJrD+TT6BBTYhHcVdyrVK6ygJ98t8L9F38BVanTIEN8sx2nH9Xe/n5+tK7bw/69et31Zt8daJQKAgICCAgIOCyWofCwkKys7PJysrCbrej1WrR6/WEhYVd0sNXqBpKlZBmzpzJihUrWLx4MXp98dxRM2fOrOzYqrR/d+v28PDAy8vLVdfduXNnoqOjSUlJ4ZFHHsHDw0MkI+G6PDw8uO+++7jvvvtISEhg165dxMbGEnf6NEfis6+4jyRJ6LRadDotarUGtaZ4qheNVounTkcDX18CAwMJCQmhefPm1KpVq8a1316NwWDAYDAQFhbm7lCEUihVQgoICOD+++/n1KlTOBwORo4cWeX6r99MJd26s7OzmT9/Po0aNUKn0+Hp6UliYiKenp4YjUbq169Pbm4uGo2G9u3bu/a9VW4Gwo35d7fykjnkSuaRKxl7pdVqq2x1myCURakS0u+//87kyZNRKBQsX76c/v37M3v2bHr16lXZ8VVJJZ0Xnn76abp06UJRURH33XcfmZmZrFixgqCgIMLDw/nqq6+YNm3aZfsKQnmUDCAWhJqqVI9VCxYsYMWKFXh5eREUFMQ333zDvHnzKju2KuXfc7nFxMTQvXt3JkyYwKhRo9BqtbRv357bbrsNX19fTpw4wcKFC10lI0EQBOHaSlVCcjqdl3RiuO22226pJ/2L24tKumwXFRWxZcsWXn75ZTQaDVlZWfz0008MGjSIqKgo1z41cSYKQRCEylCqO6Veryc5OdmVhPbv318hkwhWFyXJ6M033+Sdd95h6dKl9OzZk0aNGvHuu+8Cxb+jY8eOudbKUSqVNXYmCkEQhMpQqhLSSy+9xOjRo0lPT2fYsGHEx8czf/78yo6tynA6nbzyyiv4+/vz7LPPkpOTg8lk4sknn2TGjBk888wzJCYm0q9fv0vmurqVSpGCIAg3qlQJqXbt2qxYsYKDBw/idDqJiorCz8+vsmOrMhQKBeHh4dSpU4eVK1dy7tw5jh49SlBQEF988QWnT5/GbDa7xkCInnSCIAhlV6r6pP/85z94eXnRrVs3unfvfkslIyhuQwoJCWHNmjVkZ2fTt29fli1bhlqtJjMzk0aNGolkJAiCcINKVUIKCwvjzz//pFWrVrdcm0jJmKMRI0YwYsQI12JtS5YsQZZlvL29L9leJCNBEITyKVVCiouLY+TIkahUKjQajasU8Oeff1Z2fG5XkmBkWSYnJ4ePPvqI2NhYQkJCWLx4sZujEwRBqDlKlZC+/vrryo7DrUrTNVuSJHx9fXnllVcwm82ukpHo1i0IglAxSpWQcnJyrvh6TZgfqqRrdlJSErGxsVecoBH+GYuk1WrJzs7G29tbdOsWBEGoQKVKSM8++6zr/zabjfT0dJo3b87KlSsrLbCbRZIkdu/ezeTJkxkxYgQTJ07kiSeeYOjQoa6VMp1Op2ss0po1a/j888/59ttvxTQugiAIFahUCWnLli2XfH/o0KFqnYxK2sCcTieFhYUsX76cOXPm4OXlxVdffUXLli1dbUc2m821YNfixYs5evSoSEaCIAiVoFz1Ta1ateL48eMVHctN4XA4XMlGkiSMRiMRERF8//33PPfcc7z//vv4+PgwfPhwzGazKxlNnjyZrKws5s2bJ5KRIAhCJShVCeni5CPLMseOHXNNgV+dlFS9ORwOFi5ciEaj4bHHHiM/P599+/bx2WefERoaSlxcHJGRkSiVSqxWKy+++CIdO3Zk5MiR7r4EQRCEGqvMbUiSJOHn58fkyZMrK6ZKo1AoyM7OZvz48XTp0gUoTlJPPvkkJ0+e5IsvvkCtVrNt2zYefvhh1Go1+fn5vP766zWiA4cgCEJVVq42pOrk392y9+/fT3h4OOPHj+fHH39k3rx5aLVaxowZg9Vq5fTp00yZMoU2bdoA4Onpiaenp7vCFwRBuGWUqg0pLi6O77//HlmWefrpp+nZsyd79uyp7Nhu2MXJ6NSpU1gsFlq2bOlay2j//v0EBARw5MgRzGYzAwcO5Pnnn6dNmzaupcgFQRCEm6NUJaS3336boUOHsnXrVrKyspg2bRpz5szhu+++q+z4bkhJMpozZw4bNmygdevWdOnShW+++QaLxYJSqcTb25uTJ0+SnZ0N/JPExBRAgiAIN1epSkgWi4XBgwcTHR1Nv379uPPOO7HZbJUdW4X44IMPSEtL44svviA/P5+VK1eyb98+CgoKeOSRRxg2bBgajYZHHnkEQAx0FQRBcJNSlZCsVisZGRn8/vvvLF68mIyMDCwWS2XHViYXV7GVlG4KCgo4c+YMzz33HCkpKfj7+9O8eXPWrFnD0KFDmTdvHufPn6dDhw6uY4iSkSAIgnuUqjgwbNgwunfvTuvWrWnQoAFDhgxxlSiqCrPZjCRJSJJEamoqBQUFGI1GhgwZAkB0dDQjR46kadOmnDp1ivnz5xMSEiKSkSAIQhVRqhLSyJEjGT58uKs666effsLX17dSAyuLgwcPsmjRIj755BM2b97MokWLCAoKom7dugwdOpS8vDzWrVvHc889x86dO7nzzjsZN24cGo3GdQyRjISbyWQysWHDBiwWC/3793d3OIJQJZQqIWVlZfHLL79gMpmQZRmn00lCQgLvv/9+ZcdXKr6+vvj4+PDkk08CMHfuXM6fP8++ffuYN28eo0ePpnHjxgwfPhy9Xs/8+fMxGo1ipm7BLex2O1OnTuXo0aMA7N6zm2FDh7k5KkFwv1LdjZ9//nl27drFDz/8wIULF1i1alWVupHXqVOH0aNH43Q6MZlMRERE0L59ewYMGIBarSYvL4/XXnuNUaNG8eWXX4pkJLjVjz/+yNGjR/FoHYhnxxDiz8bz+++/uzssQXC7Ut2Rk5OT+eSTT+jatSv/+c9/+Pbbb0lMTKzs2MqkUaNGjB07FpvNxrp16wCoV68e+fn5SJJEaGgogwYNAsQaRoL7mM1mflr1E+oQA7pITzQhBjQRHuzfv9819EAQblWluisHBAQAxSWRmJgYgoODsdvtlRpYWSkUClq1asWYMWP44YcfWLNmDbt37yYpKQkfH5/LthUEd9i0aRMF+QXoG/u4XtM38cXusLN69Wr3BSYIVUCp2pD8/f357LPPaNWqlav9paCgoLJjKzONRkOHDh1ITEzkrbfeol27dsyYMYMmTZq4OzRBQJZl1q9fj9pXh9r/nxnjlUY16mADm377jVGjRrnW3hKEW02pEtKUKVP49ddfadOmDc2bN2fevHm8/PLLlR3bJT777DMcDgeNGjWie/fuV93OaDQycOBAQkJC6Natm2gvEqqMs2fPkpiYiEeU/2U/00YayfkjjcOHD3PHHXe4ITpBcL9S3aX9/f0ZOnQop06d4qWXXmL58uX07t27smNzef311/nzzz/x9vZmypQp7NixAyhuC/o3WZYJDg5mwIABIhkJpVZQUEBiYuIV31MVZfPmzUgKCU2E8bKfaWp5oNSq2Lx5c6WdXxCqulLdqQ8dOkSvXr144oknSEtLo1u3bvz555+VHRtQPLFrWloaCxcuZPjw4YwYMYLFixcDl7cFlQxuTUlJYfz48WRnZ4tkVM0lJSVx+vRprFZrpRxflmW+++47Ro4cydNPP81LL71EcnJyhZ/H4XCwfft2VMF6FJrLq+QkhYQqVM+eP/6olmuNCUJFKNXdetasWSxZsgQfHx9CQkKYNWsWU6dOrezYgOIBhGFhYVy4cAGA+vXrExgYeMk2JdMGSZLEwYMHeeGFF3jqqaeq1OBdoWyKiop49913GT9+PC+88AJPPvUkf/31V4Wf57vvvmPZsmWowwwYovw5mxTP5MmTK7yN9MSJE+Tk5KANv7x0VEIbbsRqsbB///4KPbcgVBelSkhms5kGDRq4vu/WrRsOh6PSgrq42uS2225j0KBBGI3FH+T8/HxUqn+avvLy8lyzLKxZs4bZs2ezYMECWrRoUWnxCZXLZrMx5b9T+GPvXvRNfTG2DSK7MJdJkyZx8uTJCjvP8ePH+eabb9BEGDG2DUJf3xuPOwO5kHqBjz/+uMLOA7Bjxw4USgWaWoarbqMK0KHUq9i+fXuFnlsQqotSJSSVSkVubq7rxn/mzJlKC+jiNp/t27dz4MAB2rZt60pIhw4dIjw8HIBJkybxyy+/ADBv3jzWrl3LkiVLXN3Uherp22+/5djRYxhbB2Bo4os2wohn11o4NfDOlHfIyMi44XPYbDbmL5iP0qDC2CrA9d5WB+jRNfRm27ZtHD9+/IbPA8UzM+yM3okqRI+kuvpHTpIk1KEG9u3bR2FhYYWcWxCqk1IlpCeffJL//Oc/pKSk8OKLLzJixAieeuqpygno72T01ltvsXTpUr7//nvi4uJcP9doNHh7ezNp0iQKCwsZNWoUhYWFNGjQgI8++uiS+emE6icmJoaVK1eijfREW/uflXoVOiXGDkEUmouYNWvWDZfQV69ezflz59G39ENSX/ox0Df2QWlQ8+mnn1bIQo2HDx8mPy8f7RU6M/ybJtyI3W6vFgtgCkJFu2ZCysnJIScnhzvuuINp06bx0EMP0bBhQz766CPuvPPOCg3k4g/+tm3byMnJ4fPPP+eRRx4hJSWFn3/+mYKCAmw2G++99x7BwcHMmTMHSZLQ6XT0799fTJBazTkcDhYuXIhCp8TQ8vKu0UpPDYZW/vz1119s3bq13OfJysrim2+/QR1iQFPL47KfSyoFuiY+xMXFVUhi2LZtGwqNEnXw1avrSqj8tKg81GIqIeGWdM1xSO3bt7/kJv/vNYcqopH54g4JJpMJDw8PwsPDOXXqFGPGjEGtVqNQKIiLi8PDw4P69evz9ttv8+CDD7r2Fz3paobffvuNuLg4jG0CUaiv/DfVRhixpRexc+dOunbt6lo+pCyWLFmC1WrFu2X4VbfR1jZiic3lq/99Rbt27co9WLWwsJDoXbtQhxqQlNd/YJIkCXW4B4cOHSIjI0NUPwu3lGsmpPvuu48///yTHj168MADD1zSsaGilCS83bt389FHH9G+fXvuueceXnvtNUwmE61atSIiIoL33nuPhIQExowZ49pXrGFUc+Tn57NkyRLUAborjtO5mEeUP4684pLylClTaNasWanPc+DAAbZu3VpcLWdUX3U7SSGhu82Hc3vPsWPHDu66665Sn+Ni27Ztw2qx4FXn8hLf1WjreFJ0KofffvuN4cOHl+u8glAdXbNoMX36dFatWkWTJk2YOnUqw4YN4+uvvyYvL++GT3xxT7rt27czffp0nn/+ebp27Yq/vz/t2rVj0KBBzJ8/n+nTp7N3714GDhx4yTFEMqo5lixZQoGpAEOU/3X/rpJSgWf7IJxaePOtN/n9999L1daTlZXFBx9+iMpLi76Jz3W314R5oPLR8r9l/8Nms5X2UlxkWWbdunWofbSofLWl3k/poUYdpGf9hvWV2ptVEKqa69Z16fV67rnnHr788ks+/PBDCgoKePjhh3n++edv7MR/V7MdPnwYo9FI//79SU9PZ8OGDbz44ov07duXXbt2ERUVhZeXF19//TXBwcGVOpJecI9Dhw6xceNGdA29UXmX7sat0Knw7FILPJW8//77vPHGG+zatQuLxXLF7bOzs3lnyjvk5efi0SYASXn9al5JktA38yUtNc3Vm7MsDh8+zNmzZ9HU8Szzw5OunheZGZmuWUkE4VZQqrnsSmRlZZGVlUV2djb+/qWvgvi3kqq2kydPsmjRInr06EFycjIbNmxg6NChDBkyhB9//JH09HRGjRrl2k9MA1TzZGRkMHv2bFReGgy3lW0gs0KnxLNrLcxxefwVe4pj04+hUqm4relt3NbkNmrXro1eryc+Pp5fVv9Cfn4+Hu2CUPmUvrSiCTagqWXg2+Xf0rlzZ4KDg0u1nyzLfPPNNygNarSRntff4V/UtQyovLUs/245Xbp0EROuCreE6yaklJQUfvnlF3755RcUCgWDBw9mxYoVpf5gXuzfbT5qtRqdTkfnzp0ZOnQoNpuN9PR00tPT2bFjB127dr1kX5GMapacnJziWRGKTHh2q1WqUsu/SZKEvoE3unpe2NKLsKUWcTIphqNHj8FF1XjqAD2e3WqVKRmVMET5k7c5mTlz5zBt6rRSJYedO3fy119/4RHlX6rODP8mSRK6xt6c33uetWvXutbyEoSa7JoJ6aGHHuLs2bP079+f2bNn07Rp03KdpKRkI0kSycnJzJ49m8mTJ1O/fn0iIyOZNm0aCxYsYNWqVURHRxMXF8fLL79M27ZtXccQ7UVVk8PhICsri/z8fKxWKwqFAr1ej7e3N56eV66qkmWZAwcOsHDhQjKzMvFoH4TK68bGj0kKqbg083fXatnhxGGyI9udKPUqFPoyVQZcQmlQY2jpx4kDJ1i0aBFPP/30Nd+PGRkZLFy4ELWvDm1dr3KfVxPmgTrYwNKvltK1a1e8vb3LfSxBqA6u+Sndt28fWq2W77//npUrV7peLynplHaC1ZKSzerVq0lLS2PdunXo9XqaNm3K3XffzcaNG8nKymLAgAEMHjwYk8mEn5+f6EVXxRQWFhIbG0tMTAynT5/mzNkzpKWmXbVdT61W4x/gT1BgED4+Pmg0GgoLC4mJjSUjPR2VpwZjlxDUfror7n8jJKXihpPcxbSRntjzbWzYsAGz2cz48eMxGC4fV5SWlsabb75JoaUIz/a1kBTlf/9KkoSurif5e1JJTU0VCUmo8a6ZkCpyKvwlS5awfPlyXn31VV566SWaN29OdHQ0zz//PB4eHrRp04ZOnToBoNVqa1x70cXXU9UTrcViITMzk5SUFJKSkjh79iyxp2M5l3TO1ZtNZdSg8FKhbeiFwqBC0iiLq6ZkGdku47Q4cBbZySrMJ+NcDtJZJ7JDBqUCyajE2DoQTbjHNavpZFnGciYP64XC4n0rkWxzItucSGrFZTM3XExhULFt2zZ27tyJn58fHh4eqFQq7HY7BQUFZGZmIssySm8NpkPXn+JIUkpoanmgrXuVjg9V+H0iCBXtmgkpLCysQk5is9k4fPgwkydPpn379vTo0QOHw0F4eDgNGjRg5cqVHDx40JWQoGYtM17S/pWbm4tarcbpdGI0GnE4HDetsTo2NpbJkyeXb2dJQlJJSDoFCrWieD42hYTT6sSZaYbM6+yvAFn7z99TtjkxJ+RjTsi/5m7OIjtOk718MZeRTqejT5/i0ro59/rLPzgcDld75xV/nlv65TJsqUXFMdQrf/WeINQE5a9YLwO1Wo2fnx+HDx8mKioKvV5PdHQ0n376KUuWLKFXr16uyVNrIkmS2Lt3LzNnzqRr167s3r2bTz75BC+v8t+Ajh07Vqbtb2iNHQWgkEApFf97A9VQZSHbb14X/z59+jBu3DhkWWb16tU37bwlbJnmayakkydPkp9/7QRe1Rw4cMDdIVS4mnZNVe16bkpCAujYsSO7du1i69at9O/fH6vVSmhoKA6Hw5WMqnpVVllcXEV39uxZpk+fzvTp0zl37hzLli0jNjaW1q1bl/v4zZs3R6stW4+xRx999Jo/l2UZs9lMTk4OGRkZriq7+Ph4Yk/HYiowAaBQKVD6aFB6a1Aa1SgMaiStorjKzlmcSEqq7Iq/HDgtDnACyuI56TShBtSB+mv+vc1n8kpV7VURNm7ciCzLbNq06aac79/U/tduR2vSpAmNGjW6SdHcuAMHDtzQ+7sqqmnX5I7rsVgs13yYvmkJqUePHmRlZbm6kF+4cIEZM2ZcMjt3TUxGMTExFBQU0Lt3b5KTk1m4cCGff/558fIH8+fz7LPPujnaf0iShF6vR6/XU6tWrUvWlJJlmZSUFE6dOsWpU6c4ffo0Z+PjMVuuPWuHRqPBP8Af3yBftFotJpOJ+IQE8s/kofbX4XFHAErPK3c+0NYtHr9jTTFVehuSzebk183rkLQKVMYrJ4eSKsSS+RbV6sunHioqKiI+Ib64OtZHe90u3xe3IV1Z5V63IFQlNy0hSZLEkCFD6N27N6dPn6Zp06YYDIYa13kB/mn/mjhxIr6+vjz44IMsXbqUwMBAfvjhB7RaLYsXL8bTs+wDJt1FkiRCQ0MJDQ2le/fuQHHizc7OJj09/ZJu3waDAW9vb/z9/TEajZc9aFitVn7//Xe++PIL8rdfwNgx+IpT60iShK6eV7naVmRZLu6oYJdR6JQ31NsNipNi/u5U2rdvz4QJE67Z9peUlMTzL7yArFbg2Snkhh60LEkFKFXKGxqILgjVxU1LSFB8g/Hx8aFNmzZAzRzsKssydrudDz74gLNnzzJ+/HjCwsJ44YUXWL58ObGxsRQUFLBmzRrGjx/v7nBviEKhwN/fv8w3S41GQ58+fWjRogVvTJxI9u5UPO8KRWm4sbejPc+KLbUQW7oZZ44Vh7m4Q4SkkFCHeWBo5ovScPUJVa/GaXFQeDCTyDqRvPzyy9ftiBIREcGY0aNZtGgR1qSCS9Z1KgtraiHWcyZGjhwpEpJwS7ipCenfakoV3cVtX5IkoVariYqK4uTJk+zatYtBgwYxfPhw8vLymDdvHkVFRTz//PP07NnTzZG7V61atZjyzju8+OKLmPam4dm17ON2ZFnGmmzCEpOLLdviOm7TTk0vmTpo85bN5G9NwaN90HXba/7NdDQT7DKvvPxKqdvt7r77btauW8v5Uylowo3lui7zXzkEBAYwZMiQMu0rCNWVWxNSTVGSjNasWcP+/fuRZZmnn36a8+fPc/ToUcLCwujYsSOPP/44jz32GHa7Hb1eD9SsjhzlERERwf/93/8xa9YszKdz0TfyKfW+st1Jwf50rMkmQsNCGTR0EO3bt7/iGkL33HMPb731Fhl70vC8qxZKj9KVlGxZZqyJBTz44INERkaWOjaFQsHIESOZPn061nNlLyXZ083YsswMHT/6im1VglAT1az6MjdasmQJS5cupXfv3jgcDt566y1at26Nn58fv/32G/v27QOKu8Dr9fpLFia81XXp0oUOHTtQ9FcODlPplnlw2pzk77yA/UIRjz76KAs/WsjAgQOvuqBdaGgoU6ZMQavSYNqXXqrlKmRZpuhYFt4+3uUqpbRv357Q0FAsZ8veXdscl4uXl9ctX4oWbi0iIZXTv6fLOXv2LK+//jqdOnXi3XffJSwsjCVLlvD000+Tm5tLdnb2JduLRHSpJx5/Ao1aTeHh642yBdkpU7A3DUeOlQkTJvDAAw+UaoBxaGgoT49/GluWGfPp3Otub0stwpZhZsTwEVecJuh6FAoF/fr1w5Zpxl6GgbLOIjvWC0X07t37kl6oglDTiYRUDiU9Ay0WC+fPn8dutxMbG0t8fLxrmxdffNH1/cSJE+nTp497gq0m/P39GTliJNYLhVhTCq+5bdGJbGyphTz11FNlXsK8S5cutG3bFvNfOTiLrj4LhCzLFP2VTUBg4A397bp3745KpcISX/pFLS2J+SDL4j0j3HJEQioHhULB8ePHGTlyJC+99BI//fQTo0ePZtasWZw8eRIoXrraw8MDq9WKr2/xOj+lqSa6lQ0aNIjQsFCKjmYhO648S4M1tZCimBxuv/127r777jKfQ5IkHn/8cRQoMB3Luup21mQT9mwL/xk16obacLy9vWnXrh2284XIztJVE1qTTDRt2pTQ0NByn1cQqiPRqaEcUlNTmTFjBs8++yydOnXCbDbj6elJfHw8zz//PFFRUa654zw8PFz7iWq6a1Or1Yx/ajyTJk2i8EQ2Hi0u7ersKLRTuD+D2rVr069fv3KfJyQkhPvvv58VK1Zgq+uJOkB/yc9lZ3EPt7DwMO66665yn6fEXXfdxa5du7ClF7mWx7gaR64Ve561Qs4rCNWNSEil8O9JUBUKBXa7nfr166NWq1Eqlfzwww+0aNGCHj16kJ+fT2RkJD4+PjVy4G9lioqKom/fvmzYsAF1kP6f9Y1sTgr+SEWJktdff53U1NQbOs+DDz7I5i2byT2chdddoZfMqGCOy8WeZ2X0c6MrZPLb1q1bozfosSYVXDchWc4VoFAo6Nix4w2fVxCqG3GnvA6n0+m6KX3zzTccOnQIi8VCgwYN+PPPPykoKL6BFBYWsnPnTurVq0dUVBQ+Pj44HA6RjMphzJgxRNaJxLQnDXNCPraMIvJ3XsCZa+P1CRMIDw+/4XPodDqeHv809lwLhcf/6Uhhz7Vi/iuH1q1b065duxs+DxQPBO7YoSO2lKJrToEkyzL284XcfvvtYu0j4ZYk7pbXoVAoKCoq4rHHHmPPnj38/vvvBAUF0aRJE44ePcpHH33EwYMH+f7777ntttsu2fdmLS1R0+j1et7977vUrVsP04F08ranoLWpeP31112zfFSEtm3bMnDgQMyn8zAdycRy3kTB7lS8jF4VPsdgly5dcNoc2FKv3mHDnm3BbrLRtWvXCj23IFQXosquFDZv3sydd97Jk08+ybZt29i0aRMGg4HGjRtz7tw5vvrqK0aPHk3//v3dHWqN4ePjw9w5czh8+DAWi4UmTZpUSqlhzJgxOBwO1q1bB6dzCQwM5I033qjwqXqioqIwGo1YzhWgCfW44jbWc8Xz1t15550Vem5BqC5EQiqF3NxcNm7cyG+//UadOnXIysoiKCiIXr168eCDD2IymVydF0SbUcWRJIlWrVpV6jlUKhXjx49n0KBBpKen07x580oZ+6NSqejUqRObNm9yrUx7MVmWsZ0vok3rNpd0hBGEW4lISKUwatQofH19qVWrFi1btkSpVPLiiy9isRTPnXbxDUQko+opIiKCiIiISj1Hjx492LBhA5ZkE7rIS6cSsqUW4Siy0aNHj0qNQRCqMnH3vA6HwwFA//79ycnJYebMmYwfPx61Wi2q6IQyue222wgODsaaWHDZzywJ+RiNRtq2beuGyAShahAJ6V/+PSXQxR0TGjVqREREBF26dGHmzJlIkuRKWIJwPZIk0adPH2zpRdhzLK7XHUV2bCmFdO/eXUykKtzSREKiuP6+oKCAmTNnkp+f73rtYjabjbCwMB566CFGjBgBgN1uFz3phDLp378/Op2Oopgc12vmU8X/v+eee9wTlCBUEbd0Qrp4xm2j0cihQ4dYtWqV67USTqfT9eS6ZcsWfv75Z6C4oVoQysJoNDJgwACs50xYLxRiyzJjSSigVVQrgoOD3R2eILjVLZmQYmNjgeKkExsby6lTpwB45plnyMrKwmq1upLVxYNbP/vsMz7++GOaNGninsCFGmH48OHUrVeXgj2pFOy4QFBAoFhmQhC4BXvZpaWlMX/+fB544AEsFgsbN24kOzub4cOHExgYyIkTJ7DZbGg0Gmw2m6tk9M4773Du3Dk+/vhj/Pz83HwVQnWm0+mY/PZkfvjhBywWC0OHDiUpKcndYQmC290yJSSTycTmzZsJCgqia9euTJgwgT/++INZs2YxfPhwFi1axIkTJzh58qSr2k6tVlNQUMDjjz+O1Wrl008/FclIqBB+fn6MGzeOZ555hqCgIHeHIwhVwi1RQjKbzWRnZ2M2m4HiqrrAwECSkpIoKCigd+/e1KpVi4yMDHx8fDh79iwAVquVL774gjZt2vD444+78xIEQRBqvBpfQjp//jwTJ04kNTWVAQMGMGrUKJo2bcr3339PgwYNmDRpEgDNmzfnrrvuYurUqWzbto3z58+j0Wh49NFHRTISBEG4CWp0QoqJiUGpVFKnTh1++OEHTCYTHTp0YPLkyeTm5jJs2DA0Gg0zZ85k7dq1mEwmWrZsScOGDV3dv728vNx8FYIgCLeGGpuQEhISWLZsGSEhIfTv3x9vb2/mzp3LM888Q5MmTXj77bcJCAhg7NixxMTEsGbNGtRqNYcOHSIrK4uQkBB3X4IgCMItpUYmJFmWiYyMZMqUKSxevBiLxcLAgQOxWq0sWrSId955B6fTycyZM2nSpAkLFixg4cKFaDQaGjVqxPLly/Hx8XH3ZQiCINxSalxCslqtlwxqTUtLY8qUKQQGBtKvXz/OnDnDqlWrmDt3Lnv27OHw4cPo9cVLWDscDgyGa6/oKQiCIFSOGpOQjh07BhSvznnixAn+97//ceDAAd58802aNm3Ku+++y2233UavXr349ddfOXLkCD///DNRUVGuY4hpgARBENynRnT7ttvtzJ49m5CQEB566CHeeustmjdvzv79+/nmm294//33GTduHJ988gnjxo3DYrEQGRnpKhnJsnxJqUoQBEG4+ap9QpJlGZVKxfTp03nllVd4+eWXmTFjBq1atSIrK4upU6fy+eefM3fuXHr27Mntt9/O4MGDXftKkiSSkSAIQhVQravsHA6HK5mEhoby+uuvk5aWxuHDh4HiLtv9+/fn7NmzGI1GVqxYQe/evV37i0QkCIJQdVTbhOR0OlEqleTn5/Puu++ybt06wsLCeP/99/n55585ceIEKpUKh8NBQUEBNpvNtSKoWMNIEASh6qmWCUmWZRQKBXFxcTz88MNYrVaWLl3KN998Q4sWLRg+fDhjxoxhwYIFfPXVV/Tv3x+1Wu2atVt0XhAEQah6qlUb0qFDhwgNDSUoKMg1pmjs2LEMGDCA0aNH8+effxIUFMSgQYOIiYlh69atzJo1i/r167s7dEEQBOE6qlVCOn78OF999RU9e/akffv21KlTB61Wy7Jly7j33nvJycnhs88+Izs7myeffBKDwYDBYBC96ARBEKqBalFlN2fOHHJycujZsyd//vknH3zwAXq9njFjxtCkSROio6Pp2bMnAwcOxGg04u3tTUBAAAaDAafTKZKRIAhCNVAtSkh33HEHPj4+pKen06lTJ7Kysli+fDmjR48mNTUVh8PBzp07+e677+jbty/Dhg1z7VvSbiQIQuVwOBxs3LiRffv2kZaaym1NmxIeHk7r1q3dHZpQzVTZhCTLsqsn3V133cXEiROxWq1Mnz6d48ePM2fOHIKDgxkwYADNmjXj22+/ZcCAATz44INAcS88kYwEd5BlmT179nDw4EFycnJo3LgxXbp0qZEL8aWnpzNt2jROnz6Nr0qFEYnN585hl2XMZjMPPvig+BwKpVYlE1JJMlEqlWRnZ+Pr68ukSZN47LHHWLx4MY8//jjDhg3jm2++4cSJE7Ro0YKnnnoKjUYD/NMLTxButgsXLjB71ixiYmPRKhToFAp2797N119/zWOPPcbAgQNrTBVyamoqb0x4ndysTHp5eNJArUGSJKyyk+2FJpYtW0ZeXh5jx46tMdcsVK4qmZBKksl3333H2rVrCQ0NpVmzZixatIhhw4YRGRlJ3759cTgcrF27lkceecSVjEAMeBXcIzY2lncmT8ZSYKK7wUgjjRaFJJHncLCjyMQnn3xCYmIiTz31VLV/YMrPz2fSxInkZmUy0MOTIJXa9TONpKCnwYhekvjll1/w9fVlyJAhboxWqC6qVEI6deoUjRs3BmDZsmX88ssvTJo0iaKiIl5//XU0Gg0ffPABzzzzDL6+vgwaNIhBgwYBoopOcK+EhATenDQJpcXKvUZPfJX/fLS8lEr6e3jyh7mQ9evXI0kSTz31VLV9cHI4HMycOZO0tDQGG70uSUYlJEmio96DQqeTr5Z+RcOGDS+ZyFgQrqTK3MG///57lixZwpEjR4DipcefeeYZWrZsyZ133snixYv5+OOPiYiIYPjw4Zw8edK1r6iiE9wpIyODt958EywWBnlcmoxKSJLEnToDt2v1rFu3jh9++MENkVaM//3vfxw+fJiueg9qXSEZlZAkibs8PPFVKZk9axaZmZk3MUqhOqoyd/EWLVrg5+fHpk2byMjIwNfXl++++w6n0wlA7dq1admyJUVFRTz++OOMGTPGtW91fdIUqr+ioiKmvPMOBbm5DDB44nWNWUAkSeJOvYEGag1Lly5l9+7dNzHSirF3715++OEHmmp03KbVXXd7tSTR22DElF/A3LlzXZ9nQbgStyaki9+cTZo0oW/fvuTn5/P9998TFRVF7dq1mTVrFgBr1qzh3LlzOBwOZFkGcP0rCO7gcDh4b/Zs4uPj6WUw4q+6fg24JEl09/AkWKXm/ffeIz4+vvIDrSDJycm8/957BKrUdDJ4lHo/P6WKTnoDhw8fZtWqVZUXoFDtuS0hXdzm89tvv7Fu3TqCg4Pp1q0beXl5HDlyhJ49e/LXX38xfvx4li9fzpw5c6hVq5arRCRKRoK7yLLM4sWL2btvH531HkSqNdff6W8qSaKvhxGVw8F/35lCTk5O5QVaQYqKipj67rs4LVb6GIyoyvjZu02jpa5aw1dLlxITE1NJUQrVndsSUkkyWrx4MR988AHbt2/nySefpKioiJCQENLS0khPT+fLL79kxowZfPvtt9SuXVsU+QW3k2WZL774gnXr1tFKq6e5Tl/mY3golNxtMJKVmcm7//0vNputEiKtGHa7nRnTp5OUdI5eBo9rVktejSRJdDcYMUgKZk6fQUFBQSVEKlR3Nz0hXbz0w//+9z8OHjzIihUrmD59OsOHD2fXrl106tSJiIgINm3axJkzZ/Dy8kKlUomedILbWa1WFixYwKpVq2iu1dFebyj3sYJUanoaPDgVE8OKFSuqZFJyOBx8+OGH/HnwIF0NHkSUoST4b1qFgl4GDzIyM5g5c6ZYBka4zE3v9l0y2FWWZU6fPs2FCxc4fvw4bdu2ZdiwYWzYsIEdO3Zw//3306pVKxo0aODaVyQj4UY4nU5OnTrF3r17OXnyJCnJyRQWFqLVaPEP8KduvXo0btyYZs2aER4efkmVsCzLHDx4kC+/+IL4hARu1+m5U2e44WrjehotXWUn22NjmTVrFq+88solY+rcyWw2M2fOHHbv3k07nYGmpejEcD0hKjVd9R78fugQH3/8MePHjxdV74LLTUlIJbNtOxwOlEolL730EgMGDOC5557j/fff5+zZs4SEhBAREUHbtm1dE6S2bNnykv0FoTzy8vLYsGED69etIy09HYUkEaBUEaBQoJEk7GYz+YlJRCck8NtvvwFg9PAgMjISP39/rFYrp2NjyczKwqhU0c/DizoVmDSaafU4ZIjes4dJEyfy+htv4OvrW2HHL4+4uDjef+89ks6do5Peg5blqJa8mtu0OnIcDtavX49GoxEzOQgulZ6QLk4m8fHx1K9fn/DwcHx9ffHz8+Pee+9l+fLlbNu2jZCQEPbv38+HH354yTHEm7Vmsdls2Gw2FAoFWq220v6+SUlJrF69ms2//YbVZiNUraanwUikRoNWury0LcsyuU4nKXYbqTYbmTGxnCcWBeAnSbQ0GGmo0aKshHhb6vQYFAq2nDrFM08/zfinn6Zjx4439b0vyzKnTp1izZo1bN+2Db1SyUCj1w1V011Ne70BBzK//PILWZmZ/N9zz6HXV1zSE6qnSk1IJSUigJiYGMaOHct9993HoUOH8PDwoEePHrRt2xatVsuCBQsoKirik08+ITg4+JJ9heopPz+f2NhYYmNjOXv2LOeSkkhNS8NsNru2USmV+Pr4EBYRQZ06dahfvz4NGzakVq1a5aqiLSws5I8//mDTxo0cPXYMpSTRUK2hpZcP/lcYsHoxSZLwUSrxUSpLNcamojXQaPFVKtlSaGLGjBk0btSIe+69l/bt26NWX30AannIskxOTg7nz58nISGBmJgYDh86RGZWFmqFglZaPbfr9GgrqZpckiQ66T3wUCiIjo4mNjaWx594grZt24oH0FtYpSWkkpm6Ab766it0Oh3/93//R0hICEeOHOHLL78kJSUFb29vevToQe/evdm7dy+HDx/mrrvuqjL16BXlSh0yakpVpMPhID093XVzi4uLIzYmhpQLF1zbeKtU+EgSDRVKdDoDKglkwOKUKcgv4Pyx4xw7fBj732PLDHo9DRs2pG69ekRERFCrVi0CAgLw9PREo9Fgs9nIzc0lJyeHCxcucObMGY4dO8aJ48exOxx4KVWudg+9G9oeZVlmd6GJeLsVtSShKcPfWS2Dt0LB6ZgYZs2ahSRJeHh4YDAY0Gq1aDQaVCoVSqXyiu8pp9OJ0+nE4XBgt9ux2+2uUqnNZsNqtWK1Wi8Zx6cANJKEj0KBTlKQ6rCx3lT2ThYqJCI1GpppdNd9b0uSxO06A0FKFTuysvjvf/9LRHg4j40eTdu2bct8bqH6q7SEpFAoKCgo4IknnuCOO+6goKCAuLg43n77bV5++WVWr15N165d2bt3LykpKQwfPtw18LWmJaOLS3txcXF4eXkRGBhY7ZORxWLh6fHjSU1Lu+R1T5WKAEnBnfrim02QSoXmoiqyUxYzJ63mS/ZRA4EKJXZkrLKMzWzmxJGjHP57KqnSUCGhlcBHqUQNnLNbOWe33sgllluuw4FDq6XPwIFs3LjxklJhWcmyTEFBQaV2lXYCZlnGLMt/f1d+iXYbaTY7PYyepdo+TK3hQZWaGKuFP84ns2rVKpGQblGVWmW3bds2OnfuzFNPPcUjjzxC586dCQkJYfXq1Rw/fpwJEybQsWNH1/b/93//VyOr6UquaerUqSQlJQEQEBDAu+++W+5jHjt2rMz7HDhwoNznuxKTyXRZMgpRqghVqV2JyENR+r+nJIEaCRUSNqk4MalksMjydW+RWiS0CgmtVLy/u3O9RZbp36cP48aNQ5ZlVq9e7d6AbrIcZ9m6dCsliXoaDUcsReTl5VX4e7WiVNW4yquqXU+lJiRvb2+io6NZt24d999/P48++igvvfQS4eHh1K1bl6ysLHx8fFAoFJdU8dUUF1fTffbZZ1gsFj7++GNeffVVUlNTKSgowGg0lqvqrnnz5mi12lJvf+DAgUpZwbNWrVokJCSQmppKcnIyZ8+c4VByMk5nEQBGpYpAhYIApQpfpRIvhZJQtZraag0yYJadFDid5DocZDjsZDidZDpslFQmeRqN1Ktdm9CwMPz8/PD09ESr1ZKQkEBQUBA5OTmkpKRwJi7OlRy9VSoaqtTcptVhLENCrEi7CgvYuHEjsiyzadMmt8TgTo3L8N60yzKHzUUctJqxOZ10atGiSq42W1mfIXdxx/VYLJZrPkxXakKqV68eWq2W3r178+ijjwLFXXDr1avH3XfffckNtaaNMSqZgTw1NZXs7Gw0Gg29evXi1VdfRaFQsHjxYiZMmMBDDz1EixYt3B1uuTVs2JCGDRte8prFYuHs2bOcOnWKmJgYYmNi2J+aet25B40eHjRo2JDuDRvSqFEjGjRogL+//xWT9ZU+TJmZmezfv58dO3Zw4MgRDpiLqKPW0FKrp5ZKdVOrSDvoPaDIxPZff8UoSfiVYp47AFkGk+wk3+lEBoxGIz4+PhiNRlSlPMa1OBwOVxtSyZe5qAiz2ex6CNBLEkaFAnU5fl8lbUhNNaXrFJLtsLOxsIAsu50OHTrw4IMPXvZ+Em4dlZqQQkNDefDBB9myZQtjxozBbrfj6+vLPffcA9ScRv0rkSSJEydO8NprrzFjxgzMZjOPP/44EyZMuCQ5u3u8SWXQarU0adKEJk2auF4zm82cP3+etLQ08vLysFqtKJVKjEYjfn5+hIaG4uvre0PvB39/f/r27Uvfvn1JTU1l/fr1rF+3jp8LcglUqWmu0VJfo73ujdYmy2Q47GQ7HJidTiSpeILQWv9qC7sWSZLoaDDS8fqbuhQ6nWwqzCfP5qRd27Y8+thjRERElOEI5We1Wvnrr7+Ijo5m69atpJvNNNXo6GjwKFdiKo1km411hfloDQbeeeUV7rjjjko5j1B9VPo4pLvvvpuWLVty+PBhVCoVvXv3BmrmgnoXJ9izZ8+61m9q1qwZzZo1Y9++fezdu5d27dqxatUqsrKy8Pb2dnPUN4dOp6N+/frUr1//ppwvODiYRx55hGHDhrF161Z+XrWKrcnJRJsLifi7nctHqUQrKbAjk+9wkOFwcMFhJ91hx3mF0pxaoaCpWktrvf6K45huRLbDzlpTAWalgueff54ePXrc1Ic1jUZDVFQUUVFR/Oc//2HFihX88vPPJDvt9DN44lPB1ekpdhtrC/MJCglhyn//S1BQUIUeX6iebspMDaGhoYSGhrq+r4ljjP59TWFhYdxxxx3s3r2b3377jV69erF48WJee+01vvvuO4qKili2bBkajaZGlxTdTafT0a9fP+6++26OHTvG9u3b+WP3HuJycy7bVqVU0qBBAzo3b07Tpk2JjIzE19cXm83G6dOn2bhxIzt27CDeYaO33khgBVShAeQ4HPxSkI/aw4Ppk9+mUaNGFXLc8vLy8mLs2LG0a9eOmTNm8LMpjwEGTwIq8HrXmwoIDA5h2vTp+Pn5VchxherPLUuY17RkJMsySqUSWZZ54403UKvV+Pn5udZ3OnDgAIGBgURFRTFz5sxLSoY1MTlXRZIk0aJFC1q0aMH48eNJT0/nwoULmEwmdDodfn5+hIWFXbGd5uLSw4ABA5g1cyY/5+TQz2Ak7AZnMShwOlhjygethukzZ9y0KrrSaNmyJTNnzWLSxImsyc3lXg+vGy4pWWQn6wvzURv0vDPlHZGMhEvUrDozN5EkiYKCAh5//HG8vLx4+OGHOXr0KNu3b6dx48YolUp+/fVXEhISLklGNbFnYXUgSRJBQUG0bNmSDh06cPvttxMZGVmqTgNNmzZl7gcfEBIaylpTAck3MEO3TZZZbyrAplbx0MMPV6lkVCI8PJxp06ej0utZW5hP0Q0s/yLLMr+bCsh1Onn9jTcICQmpwEiFmkAkpHL6d4+xnJwcPDw8ePXVV2nQoAHvvvsu+/fvx+Fw0LdvX1evu4vVtDa0W4Wvry/Tpk8nqFYI6wvzyXbYy3wMWZb5zZRPhsPOa6+9Rq1atSoh0ooRGhrK25MnUwhsKsy/YvtaaZywmjljs1b7nqVC5RF3xHJwOp2uNp/Y2FguXLhARkYGaWlpWCwWoHh8zl133cUff/xBixYteOGFF6rkE7BQPj4+PrzzzjvojEZ+NRVQWMaSwz5zIfE2K2PHjqVNmzaVFGXFady4MU8/8wznbTb2FBWWef8sh51dRYW0atWK+++/vxIiFGoCkZDKoaRkM2PGDN58801eeOEFAgMD8fHx4eWXXyYnJwebzcbevXtdSchgKP9CbkLVFBISwtuTJ2NRSGww5bvm4bueWKuFA+YievXqxaBBgyo5yorTs2dP+vXrx2FLEWesllLvZ5dlfis0YTAaefHFF0XNgHBV4p1RTlu3buXEiRMsX76cGTNmEBYWxvz58ykoKGDq1Kk89NBD+Pn5MWbMGHeHKlSihg0b8uJLL3HBbuM30/Wrsy7YbWwtLKDpbU2r5eJ048aNo0H9+mwtMpFTyhVfowtNZNptvPDiizVy3J1QcdzSy646+ve4qdzcXNeSAOHh4WRnZ/PDDz/wyiuvEBYWxrlz51wLDIqedDVbp06dGDduHJ9++inbCgvoZjCiuEKiSbXb+NWUT1BwMBMnTazwJSVuBrVazYTXX+f5555nfWE+9xm9rjkmK8Zi5oTVzAMPPFAtqiYF9xIlpFJSKBT89ddfLFq0iNjYWBo2bIiPjw/btm1DqVTi6+tLdHQ0FosFPz8/VzISPeluDYMHD2bEiBGctFpYb8rH/K82pdNWC2tM+fgFBjJ12jS8vLzcFOmNCw4O5o2Jb5DndLLxGlWV521Wfi8y0axpUx566KGbHKVQHYkSUimtXbuWzz77jDvvvJPk5GTatGlDo0aNWLduHTExMUDx4nCRkZGX7Cfqy28dI0eOxMfHh48//phv8nNoqNZgkBScs9tIttto1LAhr7/xBgEBAe4O9Ya1aNGCZ//v//jwgw9YZ8qnj8F4yWJ+iTYrmwoLCA0LY+KkSeKhTCgVkZBKwW6388cffzBr1iz0ej0HDx5kxYoV2O12hgwZwvr165FlmY8//hhfX18x88ItrH///jRr1oxl//sffx48iNViLl50rndv7rnnnhp1Y+7ZsyeSJPHhhx+yvCCXFmotRqWCJJuNGKuFyNq1mfzOO3h6lm5dJEEQCakUZFkmKyuL9957j6SkJFddeF5eHiNGjOCNN95wlYREe5EQGRnJxEmTkGWZoqKiGt3DskePHtSpU4eFH33EH3/XFOh0Otq1a8err75apiVSBEEkpOuQZRm1Ws0bb7xBamoqQUFBhIaGcuLECWbNmgX8Uy1XMoWQIEDxjBA1ORmVqFevHu+9/z65ubmkp6cTGRnJkSNHRDISykwkpL8VFhZe8eYhSRKyLFOrVi1q1arFO++8g5eXF5s3b2b8+PGXzMUlqumEW5m3t/ctM3u9UDlEQgISEhLYs2cPffv2xcPD47LuuBcnmo4dO2Kz2ejTpw/NmjUDava6ToIgCDeLSEiAzWbj+PHjREdHc8cdd/Doo49elmRK5q4rWc8Jijs7qG7ySqSCIAg11S3dJ9nx90jzBg0aYDQa2bx5s6ve+99J5uL566ZOnUpCQkKFLCktCIIgFLtlE1LJgFWLxcKRI0fo0aMHkyZNIjY2lq1bt+L8e2CjLMuunnMZGRmMGTMGm8122XgjQRAE4cbcsglJoVAQHx/Pfffdx8KFC/nmm28YPnw4Hh4e7Ny5kzNnzpCenu5KRkeOHOGpp56iS5cuTJ482d3hC4Ig1Di3ZJ2T0+nEbDazYMECHnnkEYYNG0ZOTg6SJDFq1Cg+/vhjZsyYgUajYeHChaxdu5ZFixbx3HPP0atXL3eHLwiCUCPdMgnp4gGrCoUCg8GAzWZztQMZjUa2bt3KoUOH+L//+z/++usvGjRogMlk4s8//2T27Nk0adLEnZcgCIJQo90SCeniZPTVV19hMBjo2bMnTZo0ITU1lfj4eOrUqUP9+vX56aef8PLyolOnTq79X3vttWo5M7MgCEJ1ckskJKVSicPh4IUXXsBms5GamkpSUhItW7Zk+/btLFiwgA4dOrB8+XJ69erlKjWVdP2uSsmopPu51Wot874lq9nWFOJ6qraadj1Q867pZl9PyX1LvsoM8ZJ8tZ/UECVJZe7cuZhMJiZNmsTUqVPZunUrzzzzDPXr1+fMmTMcO3aMZs2ace+997o75GvKz893zS4uCIJQHTVq1OiKk+7WyIT078X0AJYvX45Wq8VgMJCamoq/vz/Tpk1j3LhxDBkyBA8PD9c4oyvtX1U4nU5MJhNqtVoMyBUEoVqRZRmbzYaHh8cV77E1rsru4mSyfv160tLSaNOmDVFRUTRu3Jg333yTe++9l7Zt27J06VLOnz8PXDoQtqomIyiOTUznLwhCdaXT6a76sxqXkEqSySeffMLatWtp06YNGzZsoGvXruTk5JCdnY1KpWLSpEk0bNiQV199tUq1EQmCINyqalxCAvj+++/Zvn07S5cuxdvbm23btrFjxw7MZjMBAQEsXryYoKAgpkyZAog1jARBEKqCGpGQSqrpZFnG6XRSUFBAdnY227dvZ9CgQXTr1o1ff/2VkydPMmXKFPLz813VXiVTCAmCIAjuVSMSkkKh4MCBA2zYsIEmTZrw2GOPYTabSUpK4tChQ7Rq1YomTZpgs9kALklGVbm9SBAE4VZSbe/GJTN1AyQmJjJ58mSCg4OZMWMGS5YsYfTo0eTn5zNt2jTeeOMN1qxZc9m0PyIZCYIgVB3Vvtv3119/jUqlQpZlhg8fTkxMDPfeey+ffPIJLVu2ZOrUqVitVl544QVq167tWsNIEARBqFqqVRHBbrfzyy+/uL6fM2cO33zzDTt27OCHH34gLi6ORo0aMXfuXMaOHUt6ejqjRo3Cy8uL9evXU1RUJJKRIAhCFVWtElJcXBw6nQ6z2czcuXNJS0tj1apVvPnmm3To0IGvv/6avLw8+vbty7hx49izZw8tW7akefPm1K5dG71e7+5LuOlWr15N//796d27N19//bW7w7lhCxYsYMCAAQwYMIBZs2a5O5wKM3PmTCZMmODuMCrEli1buP/++7n77rt599133R3ODfv5559d77mZM2e6O5xyKygoYODAgZw7dw6AXbt2MWjQIPr06cPcuXPdHN3f5GrGYrHIb7zxhty9e3f5iSeekA8dOiQ7nU75zz//lN955x156tSpl+3jdDrdEKn7XbhwQe7evbucnZ0tm0wmedCgQXJsbKy7wyq36OhoediwYbLFYpGtVqv88MMPyxs3bnR3WDds165d8p133im/9tpr7g7lhiUmJsqdO3eWU1JSZKvVKo8YMUL+/fff3R1WuRUWFspt27aVMzMzZZvNJg8ZMkSOjo52d1hldujQIXngwIFys2bN5KSkJLmoqEju1q2bnJiYKNtsNnn06NFV4u9UrUpIJVq2bElkZCRpaWns3LmT1NRUbr/9djp27Igsy2RlZbm2vXjp8VvNrl27aN++PT4+PhgMBvr27cv69evdHVa5BQYGMmHCBDQaDWq1mvr165OcnOzusG5ITk4Oc+fO5cknn3R3KBVi06ZN9O/fn5CQENRqNXPnziUqKsrdYZWbw+HA6XRSVFSE3W7Hbrej1WrdHVaZrVixgrfffpugoCAAjhw5QmRkJBEREahUKgYNGlQl7g3VrkFFo9EwYMAALBYLq1evZseOHXh6ejJ48GC6detG165d0Wg0ru1v5Z50aWlpBAYGur4PCgriyJEjbozoxjRs2ND1//j4eNauXcvy5cvdGNGNe+utt3jhhRdISUlxdygVIiEhAbVazZgxY0hPT6d79+48//zz7g6r3IxGI8899xz9+vVDp9PRrl077rjjDneHVWZTp0695Psr3RtSU1NvdliXqZZ3a6PRyN13381dd92FyWRydWhQq9VoNJqrTm1+q7nS76EmlBZjY2MZPXo0r732GnXq1HF3OOX2/fffU6tWLTp06ODuUCqMw+Fg9+7dzJ49mxUrVnD06FF++uknd4dVbidPnuSHH35g69at7Ny5E4VCweeff+7usG5YVb03VMuEBMUZ/e677yYqKorhw4fTunVr18+qwi+2KggODiYjI8P1fVpamqvIXl0dOHCARx99lJdeeon77rvP3eHckLVr1xIdHc0999zDvHnz2LJlC9OmTXN3WDckICCADh064Ofnh06no2fPntW6VL5z5046dOiAv78/Go2G+++/n71797o7rBtWVe8N1TYhAdSrV4+XXnqJESNGAMXtRcI/OnbsyO7du8nKyqKoqIiNGzfStWtXd4dVbikpKTz99NO89957DBgwwN3h3LAvv/ySNWvW8PPPP/N///d/9OjRgzfeeMPdYd2Q7t27s3PnTvLy8nA4HOzYsYNmzZq5O6xya9KkCbt27aKwsBBZltmyZQstWrRwd1g3LCoqirNnz5KQkIDD4WDNmjVV4t5Q7dqQLiZJEr6+vkBxEfRWbi+6kuDgYF544QUefvhhbDYbQ4YMoWXLlu4Oq9w+//xz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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "sns.set(style=\"whitegrid\")\n",
    "\n",
    "df_cvss = df_cve.dropna()\n",
    "df_cvss = df_cvss[df_cvss.cvss3_base_score!='nan']\n",
    "df_cvss=df_cvss[['cvss3_base_score','cvss2_base_score','exploitability_score','impact_score']].reset_index(drop=True)\n",
    "\n",
    "fig,axs = show_plot('boxplot', df_cvss, 'Severity Scores', 'Measures')\n",
    "fig,axs = show_plot('violinplot', df_cvss, 'Severity Scores', 'Measures')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Plotting of the average CVSS severity scores of all the reported projects  in the database."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>projects</th>\n",
       "      <th>cve_count</th>\n",
       "      <th>avg_cvss_v3_score</th>\n",
       "      <th>avg_cvss_v2_score</th>\n",
       "      <th>avg_exploitability_score</th>\n",
       "      <th>avg_impact_score</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>https://github.com/torvalds/linux</td>\n",
       "      <td>1029</td>\n",
       "      <td>3.99</td>\n",
       "      <td>5.30</td>\n",
       "      <td>1.16</td>\n",
       "      <td>2.78</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>https://github.com/ImageMagick/ImageMagick</td>\n",
       "      <td>171</td>\n",
       "      <td>7.25</td>\n",
       "      <td>5.45</td>\n",
       "      <td>2.74</td>\n",
       "      <td>4.43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>https://github.com/tensorflow/tensorflow</td>\n",
       "      <td>156</td>\n",
       "      <td>6.67</td>\n",
       "      <td>3.92</td>\n",
       "      <td>2.05</td>\n",
       "      <td>4.50</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>https://github.com/phpmyadmin/phpmyadmin</td>\n",
       "      <td>126</td>\n",
       "      <td>3.55</td>\n",
       "      <td>4.46</td>\n",
       "      <td>1.85</td>\n",
       "      <td>1.53</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>https://github.com/the-tcpdump-group/tcpdump</td>\n",
       "      <td>101</td>\n",
       "      <td>9.57</td>\n",
       "      <td>7.33</td>\n",
       "      <td>3.86</td>\n",
       "      <td>5.70</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>https://github.com/FFmpeg/FFmpeg</td>\n",
       "      <td>88</td>\n",
       "      <td>5.86</td>\n",
       "      <td>6.35</td>\n",
       "      <td>2.23</td>\n",
       "      <td>3.57</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>https://github.com/php/php-src</td>\n",
       "      <td>61</td>\n",
       "      <td>7.46</td>\n",
       "      <td>6.59</td>\n",
       "      <td>3.22</td>\n",
       "      <td>4.21</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>https://github.com/MISP/MISP</td>\n",
       "      <td>54</td>\n",
       "      <td>6.70</td>\n",
       "      <td>5.03</td>\n",
       "      <td>2.81</td>\n",
       "      <td>3.61</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>https://github.com/WordPress/WordPress</td>\n",
       "      <td>47</td>\n",
       "      <td>7.01</td>\n",
       "      <td>5.27</td>\n",
       "      <td>3.06</td>\n",
       "      <td>3.66</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>https://github.com/radare/radare2</td>\n",
       "      <td>43</td>\n",
       "      <td>6.30</td>\n",
       "      <td>5.13</td>\n",
       "      <td>1.85</td>\n",
       "      <td>4.35</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                                       projects  cve_count  avg_cvss_v3_score  \\\n",
       "0             https://github.com/torvalds/linux       1029               3.99   \n",
       "1    https://github.com/ImageMagick/ImageMagick        171               7.25   \n",
       "2      https://github.com/tensorflow/tensorflow        156               6.67   \n",
       "3      https://github.com/phpmyadmin/phpmyadmin        126               3.55   \n",
       "4  https://github.com/the-tcpdump-group/tcpdump        101               9.57   \n",
       "5              https://github.com/FFmpeg/FFmpeg         88               5.86   \n",
       "6                https://github.com/php/php-src         61               7.46   \n",
       "7                  https://github.com/MISP/MISP         54               6.70   \n",
       "8        https://github.com/WordPress/WordPress         47               7.01   \n",
       "9             https://github.com/radare/radare2         43               6.30   \n",
       "\n",
       "   avg_cvss_v2_score  avg_exploitability_score  avg_impact_score  \n",
       "0               5.30                      1.16              2.78  \n",
       "1               5.45                      2.74              4.43  \n",
       "2               3.92                      2.05              4.50  \n",
       "3               4.46                      1.85              1.53  \n",
       "4               7.33                      3.86              5.70  \n",
       "5               6.35                      2.23              3.57  \n",
       "6               6.59                      3.22              4.21  \n",
       "7               5.03                      2.81              3.61  \n",
       "8               5.27                      3.06              3.66  \n",
       "9               5.13                      1.85              4.35  "
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "score_query = \"\"\"\n",
    "SELECT fx.repo_url AS projects,\n",
    "    count(fx.cve_id) AS cve_count,\n",
    "    AVG(NULLIF(v.cvss3_base_score,0)) AS avg_cvss_v3_score, \n",
    "    AVG(NULLIF(v.cvss2_base_score,0)) AS avg_cvss_v2_score, \n",
    "    AVG(NULLIF(v.exploitability_score,0)) AS avg_exploitability_score, \n",
    "    AVG(NULLIF(v.impact_score,0)) AS avg_impact_score\n",
    "FROM fixes fx, cve v\n",
    "WHERE fx.cve_id = v.cve_id\n",
    "GROUP BY projects\n",
    "ORDER BY cve_count DESC;\n",
    "\"\"\"\n",
    "df_score = pd.read_sql(score_query, conn)\n",
    "df_score = df_score.round(2)\n",
    "#df_score['projects'] = df_score.projects.str.split('/').str[-1]\n",
    "df_score.head(10)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Computing the statistics on the days to fix vulnerabilities of each project. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [],
   "source": [
    "def dates_diff(commit_date, publish_date):\n",
    "    pyear, pmonth, pday = publish_date.split('-')\n",
    "    publish_date = date(int(pyear), int(pmonth), int(pday.split('T')[0]))\n",
    "    \n",
    "    cyear,cmonth,cday  = commit_date.split(' ')[0].split('-')\n",
    "    commit_date = date(int(cyear), int(cmonth), int(cday))\n",
    "\n",
    "    diff_days = abs(commit_date - publish_date).days\n",
    "    return round(diff_days, 2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>project</th>\n",
       "      <th>mean_days_to_fix</th>\n",
       "      <th>median_days_to_fix</th>\n",
       "      <th>max_days_to_fix</th>\n",
       "      <th>min_days_to_fix</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>https://bitbucket.org/butor-team/portal</td>\n",
       "      <td>89.000</td>\n",
       "      <td>89.0</td>\n",
       "      <td>89</td>\n",
       "      <td>89</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>https://bitbucket.org/connect2id/nimbus-jose-jwt</td>\n",
       "      <td>96.333</td>\n",
       "      <td>80.0</td>\n",
       "      <td>129</td>\n",
       "      <td>80</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>https://bitbucket.org/jeromerobert/k4dirstat</td>\n",
       "      <td>164.000</td>\n",
       "      <td>164.0</td>\n",
       "      <td>164</td>\n",
       "      <td>164</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>https://bitbucket.org/libgd/gd-libgd</td>\n",
       "      <td>107.000</td>\n",
       "      <td>107.0</td>\n",
       "      <td>107</td>\n",
       "      <td>107</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>https://bitbucket.org/naviserver/naviserver</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>https://bitbucket.org/ritt/elog</td>\n",
       "      <td>32.000</td>\n",
       "      <td>32.0</td>\n",
       "      <td>32</td>\n",
       "      <td>32</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>https://bitbucket.org/tildeslash/monit</td>\n",
       "      <td>210.750</td>\n",
       "      <td>49.0</td>\n",
       "      <td>696</td>\n",
       "      <td>49</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>https://github.com/01org/opa-ff</td>\n",
       "      <td>630.000</td>\n",
       "      <td>630.0</td>\n",
       "      <td>630</td>\n",
       "      <td>630</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>https://github.com/01org/opa-fm</td>\n",
       "      <td>626.500</td>\n",
       "      <td>626.5</td>\n",
       "      <td>628</td>\n",
       "      <td>625</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>https://github.com/01org/tpm2.0-tools</td>\n",
       "      <td>6.000</td>\n",
       "      <td>6.0</td>\n",
       "      <td>6</td>\n",
       "      <td>6</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                                            project  mean_days_to_fix  \\\n",
       "0           https://bitbucket.org/butor-team/portal            89.000   \n",
       "1  https://bitbucket.org/connect2id/nimbus-jose-jwt            96.333   \n",
       "2      https://bitbucket.org/jeromerobert/k4dirstat           164.000   \n",
       "3              https://bitbucket.org/libgd/gd-libgd           107.000   \n",
       "4       https://bitbucket.org/naviserver/naviserver             0.000   \n",
       "5                   https://bitbucket.org/ritt/elog            32.000   \n",
       "6            https://bitbucket.org/tildeslash/monit           210.750   \n",
       "7                   https://github.com/01org/opa-ff           630.000   \n",
       "8                   https://github.com/01org/opa-fm           626.500   \n",
       "9             https://github.com/01org/tpm2.0-tools             6.000   \n",
       "\n",
       "   median_days_to_fix  max_days_to_fix  min_days_to_fix  \n",
       "0                89.0               89               89  \n",
       "1                80.0              129               80  \n",
       "2               164.0              164              164  \n",
       "3               107.0              107              107  \n",
       "4                 0.0                0                0  \n",
       "5                32.0               32               32  \n",
       "6                49.0              696               49  \n",
       "7               630.0              630              630  \n",
       "8               626.5              628              625  \n",
       "9                 6.0                6                6  "
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# df_dif_days = pd.merge(df_project, df_cve, on='cve_id')\n",
    "# df_dif_days = pd.merge(dfc, df_dif_days, on='hash')\n",
    "\n",
    "fix_days_query = \"\"\"\n",
    "SELECT fx.repo_url as project, published_date, committer_date FROM cve cv, fixes fx, commits c\n",
    "WHERE cv.cve_id=fx.cve_id\n",
    "AND fx.hash=c.hash\n",
    "\"\"\"\n",
    "df_fix_days = pd.read_sql(fix_days_query, conn)\n",
    "#df_fix_days['project'] = df_fix_days.project.str.split('/').str[-1]\n",
    "\n",
    "\n",
    "df_date = df_fix_days[['project','published_date','committer_date']].copy()\n",
    "df_date[\"mean_days_to_fix\"] = df_date.apply(lambda x: dates_diff(x.committer_date, x.published_date), axis=1)\n",
    "# df_date = df_date.groupby('project', as_index=False)['mean_days_to_fix'].mean().sort_values(by=['mean_days_to_fix'], ascending=False, na_position='first').reset_index(drop=True)\n",
    "df_date = df_date.groupby('project', as_index=False).agg({'mean_days_to_fix': ['mean','median','max','min']})\n",
    "df_date.reset_index(drop=True)\n",
    "df_date = df_date.round(3)\n",
    "df_date.columns = ['project','mean_days_to_fix','median_days_to_fix', 'max_days_to_fix','min_days_to_fix']\n",
    "df_date.head(10)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Adding avg_days_to_fix and cwe_count to the severity_summary table"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>projects</th>\n",
       "      <th>avg_cvss_v3_score</th>\n",
       "      <th>avg_cvss_v2_score</th>\n",
       "      <th>avg_exploitability_score</th>\n",
       "      <th>avg_impact_score</th>\n",
       "      <th>cve_count</th>\n",
       "      <th>cwe_count</th>\n",
       "      <th>mean_days_to_fix</th>\n",
       "      <th>median_days_to_fix</th>\n",
       "      <th>max_days_to_fix</th>\n",
       "      <th>min_days_to_fix</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>linux</td>\n",
       "      <td>3.99</td>\n",
       "      <td>5.30</td>\n",
       "      <td>1.16</td>\n",
       "      <td>2.78</td>\n",
       "      <td>973</td>\n",
       "      <td>53</td>\n",
       "      <td>213.643</td>\n",
       "      <td>49.0</td>\n",
       "      <td>4582</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>ImageMagick</td>\n",
       "      <td>7.25</td>\n",
       "      <td>5.45</td>\n",
       "      <td>2.74</td>\n",
       "      <td>4.43</td>\n",
       "      <td>157</td>\n",
       "      <td>27</td>\n",
       "      <td>190.140</td>\n",
       "      <td>75.0</td>\n",
       "      <td>1474</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>tensorflow</td>\n",
       "      <td>6.67</td>\n",
       "      <td>3.92</td>\n",
       "      <td>2.05</td>\n",
       "      <td>4.50</td>\n",
       "      <td>143</td>\n",
       "      <td>24</td>\n",
       "      <td>22.154</td>\n",
       "      <td>16.0</td>\n",
       "      <td>810</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>tcpdump</td>\n",
       "      <td>9.57</td>\n",
       "      <td>7.33</td>\n",
       "      <td>3.86</td>\n",
       "      <td>5.70</td>\n",
       "      <td>89</td>\n",
       "      <td>4</td>\n",
       "      <td>12.960</td>\n",
       "      <td>1.0</td>\n",
       "      <td>918</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>FFmpeg</td>\n",
       "      <td>5.86</td>\n",
       "      <td>6.35</td>\n",
       "      <td>2.23</td>\n",
       "      <td>3.57</td>\n",
       "      <td>83</td>\n",
       "      <td>17</td>\n",
       "      <td>63.216</td>\n",
       "      <td>44.0</td>\n",
       "      <td>1523</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>phpmyadmin</td>\n",
       "      <td>3.55</td>\n",
       "      <td>4.46</td>\n",
       "      <td>1.85</td>\n",
       "      <td>1.53</td>\n",
       "      <td>67</td>\n",
       "      <td>13</td>\n",
       "      <td>36.151</td>\n",
       "      <td>13.0</td>\n",
       "      <td>1211</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>php-src</td>\n",
       "      <td>7.46</td>\n",
       "      <td>6.59</td>\n",
       "      <td>3.22</td>\n",
       "      <td>4.21</td>\n",
       "      <td>60</td>\n",
       "      <td>17</td>\n",
       "      <td>50.262</td>\n",
       "      <td>27.0</td>\n",
       "      <td>855</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>MISP</td>\n",
       "      <td>6.70</td>\n",
       "      <td>5.03</td>\n",
       "      <td>2.81</td>\n",
       "      <td>3.61</td>\n",
       "      <td>50</td>\n",
       "      <td>17</td>\n",
       "      <td>29.333</td>\n",
       "      <td>1.0</td>\n",
       "      <td>430</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>WordPress</td>\n",
       "      <td>7.01</td>\n",
       "      <td>5.27</td>\n",
       "      <td>3.06</td>\n",
       "      <td>3.66</td>\n",
       "      <td>46</td>\n",
       "      <td>14</td>\n",
       "      <td>18.170</td>\n",
       "      <td>4.0</td>\n",
       "      <td>217</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>hhvm</td>\n",
       "      <td>7.54</td>\n",
       "      <td>6.48</td>\n",
       "      <td>3.22</td>\n",
       "      <td>4.31</td>\n",
       "      <td>40</td>\n",
       "      <td>18</td>\n",
       "      <td>182.175</td>\n",
       "      <td>37.0</td>\n",
       "      <td>1328</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "       projects  avg_cvss_v3_score  avg_cvss_v2_score  \\\n",
       "0         linux               3.99               5.30   \n",
       "1   ImageMagick               7.25               5.45   \n",
       "2    tensorflow               6.67               3.92   \n",
       "4       tcpdump               9.57               7.33   \n",
       "5        FFmpeg               5.86               6.35   \n",
       "3    phpmyadmin               3.55               4.46   \n",
       "6       php-src               7.46               6.59   \n",
       "7          MISP               6.70               5.03   \n",
       "8     WordPress               7.01               5.27   \n",
       "10         hhvm               7.54               6.48   \n",
       "\n",
       "    avg_exploitability_score  avg_impact_score  cve_count  cwe_count  \\\n",
       "0                       1.16              2.78        973         53   \n",
       "1                       2.74              4.43        157         27   \n",
       "2                       2.05              4.50        143         24   \n",
       "4                       3.86              5.70         89          4   \n",
       "5                       2.23              3.57         83         17   \n",
       "3                       1.85              1.53         67         13   \n",
       "6                       3.22              4.21         60         17   \n",
       "7                       2.81              3.61         50         17   \n",
       "8                       3.06              3.66         46         14   \n",
       "10                      3.22              4.31         40         18   \n",
       "\n",
       "    mean_days_to_fix  median_days_to_fix  max_days_to_fix  min_days_to_fix  \n",
       "0            213.643                49.0             4582                0  \n",
       "1            190.140                75.0             1474                1  \n",
       "2             22.154                16.0              810                2  \n",
       "4             12.960                 1.0              918                1  \n",
       "5             63.216                44.0             1523                1  \n",
       "3             36.151                13.0             1211                1  \n",
       "6             50.262                27.0              855                3  \n",
       "7             29.333                 1.0              430                0  \n",
       "8             18.170                 4.0              217                2  \n",
       "10           182.175                37.0             1328                1  "
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# adding cwe_count to the table\n",
    "df_score1=df_score.drop('cve_count', axis=1)\n",
    "\n",
    "df_score_all = pd.merge(df_score1, df_cve_cwe_urls, on=\"projects\")\n",
    "df_score_all.rename(columns={'cve_project':'projects'}, inplace=True)\n",
    "\n",
    "# adding average days to fix vulnerability column - avg_days_to_fix\n",
    "df_score_all = pd.merge(df_score_all, df_date, left_on='projects', right_on = 'project', how='left').drop(columns=['project'], axis=1)\n",
    "df_score_all = np.round(df_score_all, decimals=3)\n",
    "df_score_all['projects'] = df_score_all.projects.str.split('/').str[-1]\n",
    "\n",
    "df_score_all = df_score_all.sort_values(by=['cve_count'], ascending=False)\n",
    "df_score_all.to_csv(RESULT_PATH / 'severity_summary.csv', index=False)\n",
    "df_score_all.head(10)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Plotting overall severity scores of the database. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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/JP9+/dXyXFvhoix4vxjf0BoaCiffvrpVbfn5eXh7e19Uwdq3bo1Wq2WkydP8u6776JSqW7bMQ6n00l8fLyr6GNcXBxhYWFoNBoCAgLIysoCru6yuxFNmzattC2Fi6eJ5u9OxdDMD5WX5h/vrw33QBt+46VLZFnGkWfDnmnGYbQhWx0gF63klnRKlAYVSg8NSk91mcqMmM/lYTx0dWXcW7Fx40ZkWea3334r1+f9O7Xfjdfjatq0KbVr167AaK5t//79tG7dutKPezNEjLfGYrH840XrdRPIv//9b1atWkWHDh2QJKnEtEtJkoiNjb2pQKKiooiKinJ9XZaTZ02xc+dODh48SI8ePdi+fTsrV66ka9euDB06lA4dOrBgwQLat29f7V9/r169sNlsLP9pObmbktBHeaOP8r7l1ojslLGcz8dyLg97XtHguFqtLtqSWAKz2YKpMO+vB0gSKm8NKj8d6iB9UYvoBlor2npFycyaYiy3MRCbzcmvf6xD0ipQuZet6OI/uXIMpFRi902hil03gaxatQqAkydPlvtBZVmu9ifPsjhw4ABKpZIGDRq4VvC///779OnThy1btjBmzBiefvppoOjqviquGm+GVqtlyJAhREdHs3DhQmJiYnBkWXBrF4iijAPItiwzhQcysedZiIyMJPqRaFq2bElQUFCJxGS1WklNTXVVz42NjeXkyZOYz+ai1KpQ1Tagq+f5j62i4gH723EsQbY7scTlo9ao8fK6uSnVglBerptAvv7663984BNPPFHmg96OYx4mkwmz2Uzt2rXx8vKifv36XLx4kYsXL9K6dWseeeQRQkNDOXToEPv27WPfvn3Url27RowBeXh4MGnSJJo0acKCBQso2JaCe8cgFPqbmxFlPpNL4fFs/Px8GfPGK7Rt2/a6r12j0RAWFkZYWBidOnUCihYyHj58mK1bt7Jz1y5yz+WhDjKgv8sbdRlLsNdUBQczsOdYeP3114taboJQBa57Bjh9+nRlxlGjrV69muTkZAYPHkxhYSEDBgxg+fLldO7cmZUrV+JwOBgxYgRdu3ala9euREVFsWzZMvr06VNp4xnloU+fPgQFBTHjvffI33YJ9043tvJbdjgpOJCBNbGAe+65hxdeeOGGpoD/nU6no3379rRv3568vDzWr1/Pqp9XkbclGU0tNwxNfe+ItSGWiwVYEwsY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1KtXjw4dOmCz2VCr1a5SDpIkibIkgiAI13DHJJDik39BQQEKhYLhw4e7NkFSKpWMGzeO1atXExwc7EoixY8RiUMQBOFqd0RnvizLOBwOPvroI3bs2IHdbuePP/5wfb93796Eh4czduxYZFkWpRoEQRBuwB3RApEkCaVSibu7O99//z3//e9/+d///sf06dN56qmn+PPPP2ncuDGJiYksWbKEJ554oqpDvkrxrDGr1VrFkZTOYrFUdQilEjGWDxFj+aiuMRafb/4+a7WYJF/vOzXYleMdR44cITk5md69ewMwdepURo8ejaenJ9OmTcPHx4e4uDjmz5/PihUrqFWrFr169arK8K8pPz+f06dPV3UYgiDcgRo2bOja4+hKt10C+XtNquJqunq9npdeeol58+bRvn17+vfvj8ViIS0tjZSUFHbv3s3u3bv5+OOPCQwMrMJXcG1OpxOj0VhibEYQBKEiybKMzWbDzc3tmssXbqsEcuXuge+++y5hYWG0bt2aBg0aMGXKFCIiIti2bRs2m42vvvoKb29v4uLi2LFjB2fOnGH69OmiIKIgCMINuq0SCBR19bz44ovUqlWL3Ms7qL3yyisEBQURHx/Pt99+y969e5k3bx4REREArllXgiAIwo277RLIwoULycnJYfLkycyaNYuDBw/Svn17hg8f7qqee/LkSdfe04IgCELZ3HYJZP369WRkZODv709GRgYRERG8/vrrdOrUiZEjR5ZIHGJluSAIQtnddutAunbtytChQ9m4cSMNGzakY8eO1KlTh+DgYMLDw0vcVyQPQRCEsrvt1oHodDqys7OxWCwkJiby7bffEh4ezpgxYwDR6hAEQSgvt10XVrHly5ezf/9+ateuzbhx44CSs7QEQRCEW3PbJhAAu92OSlXUyBLJQxAEoXzd1gmkmOi2EgRBKH93xCW5SB4Vb/Xq1fTt25eePXvy3XffVXU41/T555/Tr18/+vXrx+zZs6s6nH80a9YspkyZUtVhXNOmTZsYPHgwvXv35t13363qcK7pl19+cf2uZ82aVdXhlFBQUED//v25ePEiADt37mTAgAFER0czd+7cKo7uJsmCcIsuXbokd+vWTc7OzpaNRqM8YMAA+cyZM1UdVgk7duyQhw8fLlssFtlqtcqPPvqovHHjxqoO65p27twpt2/fXp48eXJVh3KVCxcuyJ07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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "df_sev_plot = df_score[['avg_cvss_v2_score', 'avg_cvss_v3_score', 'avg_exploitability_score', 'avg_impact_score']]\n",
    "\n",
    "fig, axs = show_plot('violinplot', df_sev_plot, 'metric score', 'vulnerability severity measures')\n",
    "axs.set_yticklabels(('avg $CVSS_{v2}$ base','avg $CVSS_{v3}$ base','avg exploitability','avg impact'))\n",
    "fig.savefig(FIGURE_PATH / 'severity_violin.pdf')\n",
    "\n",
    "fig, axs = show_plot('boxplot', df_sev_plot, 'metric score', 'vulnerability severity measures')\n",
    "axs.set_yticklabels(('avg $CVSS_{v2}$ base','avg $CVSS_{v3}$ base','avg exploitability','avg impact'))\n",
    "fig.savefig(FIGURE_PATH / 'severity_boxplot.pdf')\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Plotting dmm_complexity of the commits"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "1) DMM scores grouped by projects:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>projects</th>\n",
       "      <th>avg_unit_size</th>\n",
       "      <th>avg_unit_complexity</th>\n",
       "      <th>avg_unit_interfacing</th>\n",
       "      <th>avg_unit_score</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>portal</td>\n",
       "      <td>0.00</td>\n",
       "      <td>0.00</td>\n",
       "      <td>1.00</td>\n",
       "      <td>0.333333</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>nimbus-jose-jwt</td>\n",
       "      <td>0.40</td>\n",
       "      <td>0.80</td>\n",
       "      <td>0.87</td>\n",
       "      <td>0.690000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>k4dirstat</td>\n",
       "      <td>0.00</td>\n",
       "      <td>0.00</td>\n",
       "      <td>0.00</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>gd-libgd</td>\n",
       "      <td>0.00</td>\n",
       "      <td>0.00</td>\n",
       "      <td>0.00</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>naviserver</td>\n",
       "      <td>0.00</td>\n",
       "      <td>0.00</td>\n",
       "      <td>1.00</td>\n",
       "      <td>0.333333</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>elog</td>\n",
       "      <td>0.00</td>\n",
       "      <td>0.00</td>\n",
       "      <td>0.50</td>\n",
       "      <td>0.166667</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>monit</td>\n",
       "      <td>0.02</td>\n",
       "      <td>0.04</td>\n",
       "      <td>0.16</td>\n",
       "      <td>0.073333</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>opa-ff</td>\n",
       "      <td>0.00</td>\n",
       "      <td>0.00</td>\n",
       "      <td>0.00</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>opa-fm</td>\n",
       "      <td>0.00</td>\n",
       "      <td>0.00</td>\n",
       "      <td>0.50</td>\n",
       "      <td>0.166667</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>tpm2.0-tools</td>\n",
       "      <td>0.33</td>\n",
       "      <td>0.33</td>\n",
       "      <td>0.33</td>\n",
       "      <td>0.330000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>mongo-c-driver-legacy</td>\n",
       "      <td>1.00</td>\n",
       "      <td>1.00</td>\n",
       "      <td>1.00</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11</th>\n",
       "      <td>OneupUploaderBundle</td>\n",
       "      <td>1.00</td>\n",
       "      <td>1.00</td>\n",
       "      <td>0.50</td>\n",
       "      <td>0.833333</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>12</th>\n",
       "      <td>389-ds-base</td>\n",
       "      <td>0.91</td>\n",
       "      <td>0.91</td>\n",
       "      <td>1.00</td>\n",
       "      <td>0.940000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13</th>\n",
       "      <td>opentrade</td>\n",
       "      <td>0.00</td>\n",
       "      <td>0.00</td>\n",
       "      <td>0.00</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14</th>\n",
       "      <td>zrlog</td>\n",
       "      <td>0.00</td>\n",
       "      <td>0.00</td>\n",
       "      <td>0.00</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                 projects  avg_unit_size  avg_unit_complexity  \\\n",
       "0                  portal           0.00                 0.00   \n",
       "1         nimbus-jose-jwt           0.40                 0.80   \n",
       "2               k4dirstat           0.00                 0.00   \n",
       "3                gd-libgd           0.00                 0.00   \n",
       "4              naviserver           0.00                 0.00   \n",
       "5                    elog           0.00                 0.00   \n",
       "6                   monit           0.02                 0.04   \n",
       "7                  opa-ff           0.00                 0.00   \n",
       "8                  opa-fm           0.00                 0.00   \n",
       "9            tpm2.0-tools           0.33                 0.33   \n",
       "10  mongo-c-driver-legacy           1.00                 1.00   \n",
       "11    OneupUploaderBundle           1.00                 1.00   \n",
       "12            389-ds-base           0.91                 0.91   \n",
       "13              opentrade           0.00                 0.00   \n",
       "14                  zrlog           0.00                 0.00   \n",
       "\n",
       "    avg_unit_interfacing  avg_unit_score  \n",
       "0                   1.00        0.333333  \n",
       "1                   0.87        0.690000  \n",
       "2                   0.00        0.000000  \n",
       "3                   0.00        0.000000  \n",
       "4                   1.00        0.333333  \n",
       "5                   0.50        0.166667  \n",
       "6                   0.16        0.073333  \n",
       "7                   0.00        0.000000  \n",
       "8                   0.50        0.166667  \n",
       "9                   0.33        0.330000  \n",
       "10                  1.00        1.000000  \n",
       "11                  0.50        0.833333  \n",
       "12                  1.00        0.940000  \n",
       "13                  0.00        0.000000  \n",
       "14                  0.00        0.000000  "
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "avg_dmm_query = \"\"\"\n",
    "SELECT repo_url AS projects,\n",
    "    AVG(NULLIF(dmm_unit_size,0)) AS avg_unit_size,\n",
    "    AVG(NULLIF(dmm_unit_complexity, 0)) AS avg_unit_complexity, \n",
    "    AVG(NULLIF(dmm_unit_interfacing, 0)) AS avg_unit_interfacing\n",
    "FROM commits\n",
    "GROUP BY projects;\n",
    "\"\"\"\n",
    "df_avg_dmm = pd.read_sql(avg_dmm_query, conn)\n",
    "df_avg_dmm = df_avg_dmm.round(2)\n",
    "df_avg_dmm['avg_unit_score'] = (df_avg_dmm.avg_unit_size + df_avg_dmm.avg_unit_complexity + df_avg_dmm.avg_unit_interfacing) / 3\n",
    "df_avg_dmm['projects'] = df_avg_dmm.projects.str.split('/').str[-1]\n",
    "\n",
    "plt.ion()\n",
    "fig, axs = show_plot('violinplot', df_avg_dmm[['avg_unit_size', 'avg_unit_complexity',\n",
    "       'avg_unit_interfacing', 'avg_unit_score']], 'metric score', 'delta maintainability metrics')\n",
    "axs.set_xticks(np.arange(0.0, 1.2, 0.2))\n",
    "axs.set_yticklabels(('avg unit size','avg unit complexity','avg unit interfacing','avg DMM score'))\n",
    "fig.savefig(FIGURE_PATH / 'dmm_avg_complexity_plot.pdf')\n",
    "df_avg_dmm.head(15)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Proportion of projects with above average risk code changes =  69.72633979475485\n"
     ]
    }
   ],
   "source": [
    "print('Proportion of projects with above average risk code changes = ', \n",
    "      len(df_avg_dmm[df_avg_dmm.avg_unit_score<0.5])/len(df_avg_dmm)*100)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "2) DMM scores of all the commits: "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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uOWWWwAIDQ0lNDTUlS9BEARBOIeLJqTo6Gh8fHyaI5ZL0pCMVq1axbfffoter2fMmDGMHz+eH374gXXr1jFq1CgGDRpEZWUlbdq0cXHEgiAIwqW4aEK64447uP322+nZs+dZG9I99thjTRrYhSxZsoRp06bx4osvUllZyb///W8efvhhBg8ezMqVK9HpdIwZM4abbroJuHqKowqCILRkF01IH374IYGBgVRVVTVHPOfkcDicexMBFBcXc9ddd9G9e3egfmLDa6+9xo8//sipU6cwm81nJU+RjARBENzfRRNSXV0dn332WXPEck6KoqDRaLBarRw6dIioqCgKCwvZtm0bN954I1A/NX3u3Lnk5uZy3333uSxWQRAE4Y+76LTv+Ph4Dh482ByxnJMsy5w4cYJx48bx/vvv83//9388+OCDHD58mI8++giAdevWkZWVhcFgcP6dqLwgCILQsly0hVRYWMhNN91E69at0ev/t3PookWLmjQwqE8qZrOZjz76iDvuuINbb72V8vJyfHx8+Pe//81f//pXTp48SWZmJq+88spZW/iKbjpBEISW5aIJ6a9//WtzxHFOkiRhMpnOqjnn5eXF6tWrOXDgALNmzcLhcCDLMn5+fmLygiAIQgt20YTUo0eP5ojjvGw2G+3atSMvL4+TJ08SFRVFbGwsCxYswGg0OrvpxB5GgiAILZtbncHPNe6j0+no3bs3+fn5fPDBB8yfP5+nnnqKpKSks8aMRDISBEFo2S7aQmpqhYWFFBYWkpycfN7uts6dO+Pp6cnevXs5cOAAt912GzfccEPzBioIgiA0KZcnpL179/LLL79QXFxMaGgoHTp0OOf94uLiiI+Px263O9cYiW46QRCuNLW1tRQVFeFwOMjNzSUwMJDQ0FBMJpOrQ2ty501IDz300AX/8D//+c9lPfG0adMYOnQoHTt2dBZHbdiJ9teJ5syFsVlZWbRt2xYQ3XSCILRsiqJw9OhRdu7cyZ69e8jKyqKivOKc9/X28SEqKorUzp3p0qULbdu2veLOgedNSFu3bsXT05OxY8eSkJDQ6Ot64uPjiYyMxG630717dwICAti+fTtdunRBo9E4k9CZyeiFF16gqqqKf/3rX2dVYhAEQWhJsrOzWbFiBatXr6ayshIArZ8BjY8Oj9YByJ5akCQkCVRFRamxYa22cyj7MOn79jFz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FygN0mjw12jRSxIaQAHMqkKNolDscFBgt5GnOKiw25EkicTERO4ZNozevXu3mCvexMREXnnlFTIzM5k7dy5bNm9mj8VMgk5PitFEYCPMUGzYgC/daqHUbsfXx4fB/fpy3333uXwH3cYmSZJziv7VTKPREBYWds4LjbS0NLdaStLUREICqqureeCBBxgyZAipqakkJiai1Wp58cUX+fTTT9FqtezcuZM///nPzmQEXPHJ6Nfi4uKIi4vj3nvvZffu3WzdupW07dvJPL2VQwOJ3y669PL0pENiR3r27EmPHj3Oeh9bmri4OKZMmUJOTg4//vgjP69axYHKckK1OtrrDcTo9L9rwFpRVXLtNg5bLRyz27ApCm1jYrjz+uvp168f+/btu+KSkSCcy1WZkH49pbumpgZvb++z1hFlZWURFxdH7969OXjwIPfdd59zuvDVzmg00qtXL3r16gVAWVkZx48fJy8vjyNHjhAQEIBWq8Xf3x8/Pz+ioqIueWvpliQiIoJHH32U22+/nTVr1rBi+XLW5eSwDgjV6ojQagnQaPGX6wesGyoh1Cr1FcfLHQ5O2W3kOexYFAWj0cjAa69lyJAhdOjQ4Yp7vwThYq66hHTmeNG2bdsICwujTZs25ObmMmfOHG699VYA1q5diyzLpKSkkJKSAvw2kQn1/P39nS2e5pq95E58fX254YYbuP7668nMzGTHjh2k7djBziNHLrjxHUBoSAgDU1NJTU2lW7duF51tKQhXsqsuITUko7///e8cPHiQXr16cfvtt/Pkk08yffp0PDw8GD58OOvWrXO2ABoSkUhGwoVIkkR8fDzx8fFMnDgRs9lMXl4eOTk5lJWVOSsi+Pj4EBYWRvjpygmCINS76hISwKxZsygvL2f27Nns2bOH7OxszGYzTz/9NFOnTmXBggUkJydz//33A4hEJPwhRqORmJgYl2x0Jggt0VWZkAIDAwkKCuLee+/F19eX2tpaNm3axBdffMGcOXOoqalxTuu+GmbSCYIguIOrMiHFx8dTW1tLq1atGDBgADExMbz77rvU1NSg1WrPWmMkkpEgCELzuKIT0vlaN7GxscTGxpKdnc327dv5+uuvOXjwIHfffbcLohQEQRCgfsuPK86SJUs4derURVs3e/fu5dSpUwB8++23+Pn5nVVmXxAEQWg+V1QLqWFKd2lpKZ9++ikR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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "df_dmmcom = df_commit[['dmm_unit_size','dmm_unit_complexity','dmm_unit_interfacing']]\n",
    "df_dmmcom = df_dmmcom.replace(\"None\", value=np.nan).dropna().astype(float)\n",
    "df_dmmcom.columns = df_dmmcom.columns.str.replace(r\"dmm_\", \"\")\n",
    "df_dmmcom['unit_score'] = (df_dmmcom.unit_size + df_dmmcom.unit_complexity + df_dmmcom.unit_interfacing) / 3\n",
    "\n",
    "fig,axs = show_plot('violinplot', df_dmmcom, 'score', 'DMM metrics')\n",
    "fig.savefig(FIGURE_PATH / 'dmm_complexity_plot.pdf')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Proportion of individual above average risk code changes =  43.47086346235645\n"
     ]
    }
   ],
   "source": [
    "print('Proportion of individual above average risk code changes = ', \n",
    "      len(df_dmmcom[df_dmmcom.unit_score<0.5])/len(df_dmmcom)*100)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [],
   "source": [
    "sns.set(font_scale=1.4)\n",
    "\n",
    "def reformat_large_tick_values(tick_val, pos):\n",
    "    \"\"\"\n",
    "    Turns large tick values (in the billions, millions and thousands) such as 4500 into 4.5K and also appropriately turns 4000 into 4K (no zero after the decimal).\n",
    "    \"\"\"\n",
    "    if tick_val >= 1000000000:\n",
    "        val = round(tick_val/1000000000, 1)\n",
    "        new_tick_format = '{:}B'.format(val)\n",
    "    elif tick_val >= 1000000:\n",
    "        val = round(tick_val/1000000, 1)\n",
    "        new_tick_format = '{:}M'.format(val)\n",
    "    elif tick_val >= 1000:\n",
    "        val = round(tick_val/1000, 1)\n",
    "        new_tick_format = '{:}K'.format(val)\n",
    "    elif tick_val < 1000:\n",
    "        new_tick_format = round(tick_val, 1)\n",
    "    else:\n",
    "        new_tick_format = tick_val\n",
    "\n",
    "    # make new_tick_format into a string value\n",
    "    new_tick_format = str(new_tick_format)\n",
    "    \n",
    "    # code below will keep 4.5M as is but change values such as 4.0M to 4M since that zero after the decimal isn't needed\n",
    "    index_of_decimal = new_tick_format.find(\".\")\n",
    "    \n",
    "    if index_of_decimal != -1:\n",
    "        value_after_decimal = new_tick_format[index_of_decimal+1]\n",
    "        if value_after_decimal == \"0\":\n",
    "            # remove the 0 after the decimal point since it's not needed\n",
    "            new_tick_format = new_tick_format[0:index_of_decimal] + new_tick_format[index_of_decimal+2:]\n",
    "            \n",
    "    return new_tick_format"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "C                   4224\n",
      "PHP                 3560\n",
      "unknown             1479\n",
      "C++                 1263\n",
      "JavaScript          1215\n",
      "Markdown             976\n",
      "Python               718\n",
      "Ruby                 705\n",
      "Java                 640\n",
      "HTML                 538\n",
      "Shell                450\n",
      "Go                   373\n",
      "TypeScript           337\n",
      "Objective-C          226\n",
      "SQL                  212\n",
      "C#                   202\n",
      "CSS                  185\n",
      "Perl                 181\n",
      "Batchfile            170\n",
      "CoffeeScript         148\n",
      "Scala                103\n",
      "PowerShell            70\n",
      "Haskell               55\n",
      "Lua                   45\n",
      "TeX                   37\n",
      "Jupyter Notebook      34\n",
      "Rust                  33\n",
      "Swift                 32\n",
      "R                     14\n",
      "Matlab                13\n",
      "Erlang                 8\n",
      "None                   3\n",
      "Name: programming_language, dtype: int64\n"
     ]
    }
   ],
   "source": [
    "print(df_file.programming_language.value_counts())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 504x360 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# at file level\n",
    "ax = df_file.programming_language.value_counts().head(15).plot.bar(\n",
    "    x = 'programming_language', y = 'file_count', align='center', legend=False, width=0.8, rot=60, figsize=(7,5),fontsize=14)\n",
    "for p in ax.patches:\n",
    "    ax.annotate(str(p.get_height()), (p.get_x() * 1.005, p.get_height() * 1.005), rotation=45, fontsize=12)\n",
    "    \n",
    "ax.yaxis.set_major_formatter(tick.FuncFormatter(reformat_large_tick_values));\n",
    "ax.set_xlabel(\"programming languages\")\n",
    "ax.set_ylabel(\"# files\")\n",
    "plt.tight_layout()\n",
    "plt.grid()\n",
    "plt.savefig(FIGURE_PATH / 'file_pl_bar.pdf')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "42.65439202148063"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# proportion of PHP and C\n",
    "total = df_file['programming_language'].value_counts().sum()\n",
    "pl = df_file[df_file['programming_language'].isin(['PHP','C'])].value_counts().sum()\n",
    "pl_percent = pl/total*100\n",
    "pl_percent"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 504x360 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# at method level\n",
    "pl_query = \"\"\"\n",
    "SELECT f.programming_language, count(DISTINCT f.file_change_id) AS file_count, count(DISTINCT m.method_change_id) AS method_count\n",
    "from file_change f, method_change m\n",
    "WHERE f.file_change_id=m.file_change_id\n",
    "GROUP BY f.programming_language\n",
    "ORDER BY method_count DESC;\n",
    "\"\"\"\n",
    "df_pl = pd.read_sql_query(pl_query, conn)\n",
    "# dfm_pl = filterPL(dfm)  # replaced by guesslang API\n",
    "fig, ax2 = plt.subplots() \n",
    "ax2 = df_pl.sort_values(by=['method_count'], ascending=False)[['programming_language','method_count']].head(15).plot.bar(\n",
    "    x = 'programming_language', ax=ax2, y = 'method_count', legend=False, align='center', width=0.8, rot=90, figsize=(7,5),fontsize=14)\n",
    "for p in ax2.patches:\n",
    "    ax2.annotate(str(p.get_height()), (p.get_x() * 1.005, p.get_height() * 1.005), rotation=45, fontsize=12)\n",
    "\n",
    "ax2.yaxis.set_major_formatter(tick.FuncFormatter(reformat_large_tick_values));\n",
    "ax2.set_xlabel(\"programming languages\")\n",
    "ax2.set_ylabel(\"# methods\")\n",
    "plt.tight_layout()\n",
    "plt.grid()\n",
    "fig.savefig(FIGURE_PATH / 'method_pl_bar.pdf')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## (At file level) Getting all the files with single (or few) lines modification for fixing the vulnerabilities."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "- Option 1: adding two columns diff_added and diff_deleted from diff_parsed column"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>file_change_id</th>\n",
       "      <th>hash</th>\n",
       "      <th>filename</th>\n",
       "      <th>old_path</th>\n",
       "      <th>new_path</th>\n",
       "      <th>change_type</th>\n",
       "      <th>diff</th>\n",
       "      <th>diff_parsed</th>\n",
       "      <th>num_lines_added</th>\n",
       "      <th>num_lines_deleted</th>\n",
       "      <th>code_after</th>\n",
       "      <th>code_before</th>\n",
       "      <th>nloc</th>\n",
       "      <th>complexity</th>\n",
       "      <th>token_count</th>\n",
       "      <th>programming_language</th>\n",
       "      <th>diff_added</th>\n",
       "      <th>diff_deleted</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>98573718700688</td>\n",
       "      <td>c5be6209311d4a8f10fda37d0d3f876c1b33b77b</td>\n",
       "      <td>svr_principal.c</td>\n",
       "      <td>src/lib/kadm5/srv/svr_principal.c</td>\n",
       "      <td>src/lib/kadm5/srv/svr_principal.c</td>\n",
       "      <td>ModificationType.MODIFY</td>\n",
       "      <td>@@ -186,7 +186,7 @@ check_1_6_dummy(kadm5_prin...</td>\n",
       "      <td>{'added': [(189, '    if (password == NULL || ...</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>/* -*- mode: c; c-basic-offset: 4; indent-tabs...</td>\n",
       "      <td>/* -*- mode: c; c-basic-offset: 4; indent-tabs...</td>\n",
       "      <td>1655</td>\n",
       "      <td>439</td>\n",
       "      <td>10633</td>\n",
       "      <td>C</td>\n",
       "      <td>[(189,     if (password == NULL || !(mask &amp; KA...</td>\n",
       "      <td>[(189,     if (!(mask &amp; KADM5_ATTRIBUTES) ||)]</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>26401283970063</td>\n",
       "      <td>cf1a0c411b2668c57c41e9c4efd15ba17b6b322c</td>\n",
       "      <td>schpw.c</td>\n",
       "      <td>src/kadmin/server/schpw.c</td>\n",
       "      <td>src/kadmin/server/schpw.c</td>\n",
       "      <td>ModificationType.MODIFY</td>\n",
       "      <td>@@ -52,7 +52,7 @@ process_chpw_request(krb5_co...</td>\n",
       "      <td>{'added': [(55, '        goto bailout;'), (70,...</td>\n",
       "      <td>4</td>\n",
       "      <td>4</td>\n",
       "      <td>/* -*- mode: c; c-basic-offset: 4; indent-tabs...</td>\n",
       "      <td>/* -*- mode: c; c-basic-offset: 4; indent-tabs...</td>\n",
       "      <td>363</td>\n",
       "      <td>54</td>\n",
       "      <td>2230</td>\n",
       "      <td>C</td>\n",
       "      <td>[(55,         goto bailout;), (70,         got...</td>\n",
       "      <td>[(55,         goto chpwfail;), (70,         go...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>75372792453382</td>\n",
       "      <td>f18ddf5d82de0ab7591a36e465bc24225776940f</td>\n",
       "      <td>spnego_mech.c</td>\n",
       "      <td>src/lib/gssapi/spnego/spnego_mech.c</td>\n",
       "      <td>src/lib/gssapi/spnego/spnego_mech.c</td>\n",
       "      <td>ModificationType.MODIFY</td>\n",
       "      <td>@@ -818,7 +818,6 @@ init_ctx_reselect(OM_uint3...</td>\n",
       "      <td>{'added': [], 'deleted': [(821, '\\tgeneric_gss...</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>/*\\n * Copyright (C) 2006,2008 by the Massachu...</td>\n",
       "      <td>/*\\n * Copyright (C) 2006,2008 by the Massachu...</td>\n",
       "      <td>3104</td>\n",
       "      <td>512</td>\n",
       "      <td>15617</td>\n",
       "      <td>C</td>\n",
       "      <td>[]</td>\n",
       "      <td>[(821, \\tgeneric_gss_release_oid(&amp;tmpmin, &amp;sc-...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>133296456517228</td>\n",
       "      <td>524688ce87a15fc75f87efc8c039ba4c7d5c197b</td>\n",
       "      <td>spnego_mech.c</td>\n",
       "      <td>src/lib/gssapi/spnego/spnego_mech.c</td>\n",
       "      <td>src/lib/gssapi/spnego/spnego_mech.c</td>\n",
       "      <td>ModificationType.MODIFY</td>\n",
       "      <td>@@ -1468,7 +1468,7 @@ acc_ctx_cont(OM_uint32 *...</td>\n",
       "      <td>{'added': [(1471, '\\tif (REMAIN == 0 || REMAIN...</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>/*\\n * Copyright (C) 2006,2008 by the Massachu...</td>\n",
       "      <td>/*\\n * Copyright (C) 2006,2008 by the Massachu...</td>\n",
       "      <td>3104</td>\n",
       "      <td>513</td>\n",
       "      <td>15621</td>\n",
       "      <td>C</td>\n",
       "      <td>[(1471, \\tif (REMAIN == 0 || REMAIN &gt; INT_MAX))]</td>\n",
       "      <td>[(1471, \\tif (REMAIN &gt; INT_MAX))]</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>164723005006285</td>\n",
       "      <td>af0ed4df4dfae762ab5fb605f5a0c8f59cb4f6ca</td>\n",
       "      <td>svr_principal.c</td>\n",
       "      <td>src/lib/kadm5/srv/svr_principal.c</td>\n",
       "      <td>src/lib/kadm5/srv/svr_principal.c</td>\n",
       "      <td>ModificationType.MODIFY</td>\n",
       "      <td>@@ -344,6 +344,20 @@ check_1_6_dummy(kadm5_pri...</td>\n",
       "      <td>{'added': [(347, '/* Return the number of keys...</td>\n",
       "      <td>18</td>\n",
       "      <td>3</td>\n",
       "      <td>/* -*- mode: c; c-basic-offset: 4; indent-tabs...</td>\n",
       "      <td>/* -*- mode: c; c-basic-offset: 4; indent-tabs...</td>\n",
       "      <td>1721</td>\n",
       "      <td>450</td>\n",
       "      <td>11053</td>\n",
       "      <td>C</td>\n",
       "      <td>[(347, /* Return the number of keys with the n...</td>\n",
       "      <td>[(1596,     int                         ret, l...</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "    file_change_id                                      hash         filename  \\\n",
       "0   98573718700688  c5be6209311d4a8f10fda37d0d3f876c1b33b77b  svr_principal.c   \n",
       "1   26401283970063  cf1a0c411b2668c57c41e9c4efd15ba17b6b322c          schpw.c   \n",
       "2   75372792453382  f18ddf5d82de0ab7591a36e465bc24225776940f    spnego_mech.c   \n",
       "3  133296456517228  524688ce87a15fc75f87efc8c039ba4c7d5c197b    spnego_mech.c   \n",
       "4  164723005006285  af0ed4df4dfae762ab5fb605f5a0c8f59cb4f6ca  svr_principal.c   \n",
       "\n",
       "                              old_path                             new_path  \\\n",
       "0    src/lib/kadm5/srv/svr_principal.c    src/lib/kadm5/srv/svr_principal.c   \n",
       "1            src/kadmin/server/schpw.c            src/kadmin/server/schpw.c   \n",
       "2  src/lib/gssapi/spnego/spnego_mech.c  src/lib/gssapi/spnego/spnego_mech.c   \n",
       "3  src/lib/gssapi/spnego/spnego_mech.c  src/lib/gssapi/spnego/spnego_mech.c   \n",
       "4    src/lib/kadm5/srv/svr_principal.c    src/lib/kadm5/srv/svr_principal.c   \n",
       "\n",
       "               change_type                                               diff  \\\n",
       "0  ModificationType.MODIFY  @@ -186,7 +186,7 @@ check_1_6_dummy(kadm5_prin...   \n",
       "1  ModificationType.MODIFY  @@ -52,7 +52,7 @@ process_chpw_request(krb5_co...   \n",
       "2  ModificationType.MODIFY  @@ -818,7 +818,6 @@ init_ctx_reselect(OM_uint3...   \n",
       "3  ModificationType.MODIFY  @@ -1468,7 +1468,7 @@ acc_ctx_cont(OM_uint32 *...   \n",
       "4  ModificationType.MODIFY  @@ -344,6 +344,20 @@ check_1_6_dummy(kadm5_pri...   \n",
       "\n",
       "                                         diff_parsed num_lines_added  \\\n",
       "0  {'added': [(189, '    if (password == NULL || ...               1   \n",
       "1  {'added': [(55, '        goto bailout;'), (70,...               4   \n",
       "2  {'added': [], 'deleted': [(821, '\\tgeneric_gss...               0   \n",
       "3  {'added': [(1471, '\\tif (REMAIN == 0 || REMAIN...               1   \n",
       "4  {'added': [(347, '/* Return the number of keys...              18   \n",
       "\n",
       "  num_lines_deleted                                         code_after  \\\n",
       "0                 1  /* -*- mode: c; c-basic-offset: 4; indent-tabs...   \n",
       "1                 4  /* -*- mode: c; c-basic-offset: 4; indent-tabs...   \n",
       "2                 1  /*\\n * Copyright (C) 2006,2008 by the Massachu...   \n",
       "3                 1  /*\\n * Copyright (C) 2006,2008 by the Massachu...   \n",
       "4                 3  /* -*- mode: c; c-basic-offset: 4; indent-tabs...   \n",
       "\n",
       "                                         code_before  nloc complexity  \\\n",
       "0  /* -*- mode: c; c-basic-offset: 4; indent-tabs...  1655        439   \n",
       "1  /* -*- mode: c; c-basic-offset: 4; indent-tabs...   363         54   \n",
       "2  /*\\n * Copyright (C) 2006,2008 by the Massachu...  3104        512   \n",
       "3  /*\\n * Copyright (C) 2006,2008 by the Massachu...  3104        513   \n",
       "4  /* -*- mode: c; c-basic-offset: 4; indent-tabs...  1721        450   \n",
       "\n",
       "  token_count programming_language  \\\n",
       "0       10633                    C   \n",
       "1        2230                    C   \n",
       "2       15617                    C   \n",
       "3       15621                    C   \n",
       "4       11053                    C   \n",
       "\n",
       "                                          diff_added  \\\n",
       "0  [(189,     if (password == NULL || !(mask & KA...   \n",
       "1  [(55,         goto bailout;), (70,         got...   \n",
       "2                                                 []   \n",
       "3   [(1471, \\tif (REMAIN == 0 || REMAIN > INT_MAX))]   \n",
       "4  [(347, /* Return the number of keys with the n...   \n",
       "\n",
       "                                        diff_deleted  \n",
       "0     [(189,     if (!(mask & KADM5_ATTRIBUTES) ||)]  \n",
       "1  [(55,         goto chpwfail;), (70,         go...  \n",
       "2  [(821, \\tgeneric_gss_release_oid(&tmpmin, &sc-...  \n",
       "3                  [(1471, \\tif (REMAIN > INT_MAX))]  \n",
       "4  [(1596,     int                         ret, l...  "
      ]
     },
     "execution_count": 26,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df_diff = df_file[df_file.programming_language=='C'].copy()\n",
    "df_diff['diff_added'] = df_diff.apply(lambda row: ast.literal_eval(row.diff_parsed)['added'], axis=1)\n",
    "df_diff['diff_deleted'] = df_diff.apply(lambda row: ast.literal_eval(row.diff_parsed)['deleted'], axis=1)\n",
    "df_diff = df_diff.reset_index(drop=True)\n",
    "df_diff.head(5)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "-Option 2: getting the added and removed statements (an alternative method without 'diff_parsed' column)."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [],
   "source": [
    "import difflib\n",
    "\n",
    "def to_diff_file(old_str, new_str):\n",
    "    \"\"\"\n",
    "    produces a diff file comparing two files/methods.\n",
    "    \"\"\"\n",
    "    diff = difflib.ndiff(old_str.splitlines(1), new_str.splitlines(1))\n",
    "    result = '\\n'.join(diff)\n",
    "    return result\n",
    "\n",
    "\n",
    "def separate_diff(diff):\n",
    "    \"\"\"\n",
    "    :returns Dictionary of added and removed statements along with line number.\n",
    "    \"\"\"\n",
    "    lines = diff.split(\"\\n\")\n",
    "    added = []  # List[Tuple[int, str]]\n",
    "    deleted = []  # List[Tuple[int, str]]\n",
    "    count_deletions = 0\n",
    "    count_additions = 0\n",
    "\n",
    "    for line in lines:\n",
    "        line = line.rstrip()\n",
    "        count_deletions += 1\n",
    "        count_additions += 1\n",
    "\n",
    "        if line.startswith(\"-\"):\n",
    "            deleted.append((count_deletions, line[1:]))\n",
    "            count_additions -= 1\n",
    "\n",
    "        if line.startswith(\"+\"):\n",
    "            added.append((count_additions, line[1:]))\n",
    "            count_deletions -= 1\n",
    "\n",
    "        if line == r\"\\ No newline at the end of file\":\n",
    "            count_deletions -= 1\n",
    "            count_additions -= 1\n",
    "\n",
    "    return added, deleted"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Number of files with single line modification = 835\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>index</th>\n",
       "      <th>file_change_id</th>\n",
       "      <th>hash</th>\n",
       "      <th>filename</th>\n",
       "      <th>old_path</th>\n",
       "      <th>new_path</th>\n",
       "      <th>change_type</th>\n",
       "      <th>diff</th>\n",
       "      <th>diff_parsed</th>\n",
       "      <th>num_lines_added</th>\n",
       "      <th>...</th>\n",
       "      <th>code_after</th>\n",
       "      <th>code_before</th>\n",
       "      <th>nloc</th>\n",
       "      <th>complexity</th>\n",
       "      <th>token_count</th>\n",
       "      <th>programming_language</th>\n",
       "      <th>diff_added</th>\n",
       "      <th>diff_deleted</th>\n",
       "      <th>vul</th>\n",
       "      <th>patch</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0</td>\n",
       "      <td>98573718700688</td>\n",
       "      <td>c5be6209311d4a8f10fda37d0d3f876c1b33b77b</td>\n",
       "      <td>svr_principal.c</td>\n",
       "      <td>src/lib/kadm5/srv/svr_principal.c</td>\n",
       "      <td>src/lib/kadm5/srv/svr_principal.c</td>\n",
       "      <td>ModificationType.MODIFY</td>\n",
       "      <td>@@ -186,7 +186,7 @@ check_1_6_dummy(kadm5_prin...</td>\n",
       "      <td>{'added': [(189, '    if (password == NULL || ...</td>\n",
       "      <td>1</td>\n",
       "      <td>...</td>\n",
       "      <td>/* -*- mode: c; c-basic-offset: 4; indent-tabs...</td>\n",
       "      <td>/* -*- mode: c; c-basic-offset: 4; indent-tabs...</td>\n",
       "      <td>1655</td>\n",
       "      <td>439</td>\n",
       "      <td>10633</td>\n",
       "      <td>C</td>\n",
       "      <td>[(189,     if (password == NULL || !(mask &amp; KA...</td>\n",
       "      <td>[(189,     if (!(mask &amp; KADM5_ATTRIBUTES) ||)]</td>\n",
       "      <td>if (!(mask &amp; KADM5_ATTRIBUTES) ||</td>\n",
       "      <td>if (password == NULL || !(mask &amp; KADM5_ATTRIBU...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2</td>\n",
       "      <td>75372792453382</td>\n",
       "      <td>f18ddf5d82de0ab7591a36e465bc24225776940f</td>\n",
       "      <td>spnego_mech.c</td>\n",
       "      <td>src/lib/gssapi/spnego/spnego_mech.c</td>\n",
       "      <td>src/lib/gssapi/spnego/spnego_mech.c</td>\n",
       "      <td>ModificationType.MODIFY</td>\n",
       "      <td>@@ -818,7 +818,6 @@ init_ctx_reselect(OM_uint3...</td>\n",
       "      <td>{'added': [], 'deleted': [(821, '\\tgeneric_gss...</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>/*\\n * Copyright (C) 2006,2008 by the Massachu...</td>\n",
       "      <td>/*\\n * Copyright (C) 2006,2008 by the Massachu...</td>\n",
       "      <td>3104</td>\n",
       "      <td>512</td>\n",
       "      <td>15617</td>\n",
       "      <td>C</td>\n",
       "      <td>[]</td>\n",
       "      <td>[(821, \\tgeneric_gss_release_oid(&amp;tmpmin, &amp;sc-...</td>\n",
       "      <td>generic_gss_release_oid(&amp;tmpmin, &amp;sc-&gt;internal...</td>\n",
       "      <td>None</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3</td>\n",
       "      <td>133296456517228</td>\n",
       "      <td>524688ce87a15fc75f87efc8c039ba4c7d5c197b</td>\n",
       "      <td>spnego_mech.c</td>\n",
       "      <td>src/lib/gssapi/spnego/spnego_mech.c</td>\n",
       "      <td>src/lib/gssapi/spnego/spnego_mech.c</td>\n",
       "      <td>ModificationType.MODIFY</td>\n",
       "      <td>@@ -1468,7 +1468,7 @@ acc_ctx_cont(OM_uint32 *...</td>\n",
       "      <td>{'added': [(1471, '\\tif (REMAIN == 0 || REMAIN...</td>\n",
       "      <td>1</td>\n",
       "      <td>...</td>\n",
       "      <td>/*\\n * Copyright (C) 2006,2008 by the Massachu...</td>\n",
       "      <td>/*\\n * Copyright (C) 2006,2008 by the Massachu...</td>\n",
       "      <td>3104</td>\n",
       "      <td>513</td>\n",
       "      <td>15621</td>\n",
       "      <td>C</td>\n",
       "      <td>[(1471, \\tif (REMAIN == 0 || REMAIN &gt; INT_MAX))]</td>\n",
       "      <td>[(1471, \\tif (REMAIN &gt; INT_MAX))]</td>\n",
       "      <td>if (REMAIN &gt; INT_MAX)</td>\n",
       "      <td>if (REMAIN == 0 || REMAIN &gt; INT_MAX)</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>7</td>\n",
       "      <td>19781207130058</td>\n",
       "      <td>82dc33da50338ac84c7b4102dc6513d897d0506a</td>\n",
       "      <td>context_time.c</td>\n",
       "      <td>src/lib/gssapi/krb5/context_time.c</td>\n",
       "      <td>src/lib/gssapi/krb5/context_time.c</td>\n",
       "      <td>ModificationType.MODIFY</td>\n",
       "      <td>@@ -40,7 +40,7 @@ krb5_gss_context_time(minor_...</td>\n",
       "      <td>{'added': [(43, '    if (ctx-&gt;terminated || !c...</td>\n",
       "      <td>1</td>\n",
       "      <td>...</td>\n",
       "      <td>/* -*- mode: c; c-basic-offset: 4; indent-tabs...</td>\n",
       "      <td>/* -*- mode: c; c-basic-offset: 4; indent-tabs...</td>\n",
       "      <td>31</td>\n",
       "      <td>5</td>\n",
       "      <td>158</td>\n",
       "      <td>C</td>\n",
       "      <td>[(43,     if (ctx-&gt;terminated || !ctx-&gt;establi...</td>\n",
       "      <td>[(43,     if (! ctx-&gt;established) {)]</td>\n",
       "      <td>if (! ctx-&gt;established) {</td>\n",
       "      <td>if (ctx-&gt;terminated || !ctx-&gt;established) {</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>9</td>\n",
       "      <td>7262881820720</td>\n",
       "      <td>82dc33da50338ac84c7b4102dc6513d897d0506a</td>\n",
       "      <td>gssapiP_krb5.h</td>\n",
       "      <td>src/lib/gssapi/krb5/gssapiP_krb5.h</td>\n",
       "      <td>src/lib/gssapi/krb5/gssapiP_krb5.h</td>\n",
       "      <td>ModificationType.MODIFY</td>\n",
       "      <td>@@ -206,6 +206,7 @@ typedef struct _krb5_gss_c...</td>\n",
       "      <td>{'added': [(209, '    unsigned int terminated ...</td>\n",
       "      <td>1</td>\n",
       "      <td>...</td>\n",
       "      <td>/* -*- mode: c; indent-tabs-mode: nil -*- */\\n...</td>\n",
       "      <td>/* -*- mode: c; indent-tabs-mode: nil -*- */\\n...</td>\n",
       "      <td>902</td>\n",
       "      <td>4</td>\n",
       "      <td>3335</td>\n",
       "      <td>C</td>\n",
       "      <td>[(209,     unsigned int terminated : 1;)]</td>\n",
       "      <td>[]</td>\n",
       "      <td>None</td>\n",
       "      <td>unsigned int terminated : 1;</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 21 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "   index   file_change_id                                      hash  \\\n",
       "0      0   98573718700688  c5be6209311d4a8f10fda37d0d3f876c1b33b77b   \n",
       "1      2   75372792453382  f18ddf5d82de0ab7591a36e465bc24225776940f   \n",
       "2      3  133296456517228  524688ce87a15fc75f87efc8c039ba4c7d5c197b   \n",
       "3      7   19781207130058  82dc33da50338ac84c7b4102dc6513d897d0506a   \n",
       "4      9    7262881820720  82dc33da50338ac84c7b4102dc6513d897d0506a   \n",
       "\n",
       "          filename                             old_path  \\\n",
       "0  svr_principal.c    src/lib/kadm5/srv/svr_principal.c   \n",
       "1    spnego_mech.c  src/lib/gssapi/spnego/spnego_mech.c   \n",
       "2    spnego_mech.c  src/lib/gssapi/spnego/spnego_mech.c   \n",
       "3   context_time.c   src/lib/gssapi/krb5/context_time.c   \n",
       "4   gssapiP_krb5.h   src/lib/gssapi/krb5/gssapiP_krb5.h   \n",
       "\n",
       "                              new_path              change_type  \\\n",
       "0    src/lib/kadm5/srv/svr_principal.c  ModificationType.MODIFY   \n",
       "1  src/lib/gssapi/spnego/spnego_mech.c  ModificationType.MODIFY   \n",
       "2  src/lib/gssapi/spnego/spnego_mech.c  ModificationType.MODIFY   \n",
       "3   src/lib/gssapi/krb5/context_time.c  ModificationType.MODIFY   \n",
       "4   src/lib/gssapi/krb5/gssapiP_krb5.h  ModificationType.MODIFY   \n",
       "\n",
       "                                                diff  \\\n",
       "0  @@ -186,7 +186,7 @@ check_1_6_dummy(kadm5_prin...   \n",
       "1  @@ -818,7 +818,6 @@ init_ctx_reselect(OM_uint3...   \n",
       "2  @@ -1468,7 +1468,7 @@ acc_ctx_cont(OM_uint32 *...   \n",
       "3  @@ -40,7 +40,7 @@ krb5_gss_context_time(minor_...   \n",
       "4  @@ -206,6 +206,7 @@ typedef struct _krb5_gss_c...   \n",
       "\n",
       "                                         diff_parsed num_lines_added  ...  \\\n",
       "0  {'added': [(189, '    if (password == NULL || ...               1  ...   \n",
       "1  {'added': [], 'deleted': [(821, '\\tgeneric_gss...               0  ...   \n",
       "2  {'added': [(1471, '\\tif (REMAIN == 0 || REMAIN...               1  ...   \n",
       "3  {'added': [(43, '    if (ctx->terminated || !c...               1  ...   \n",
       "4  {'added': [(209, '    unsigned int terminated ...               1  ...   \n",
       "\n",
       "                                          code_after  \\\n",
       "0  /* -*- mode: c; c-basic-offset: 4; indent-tabs...   \n",
       "1  /*\\n * Copyright (C) 2006,2008 by the Massachu...   \n",
       "2  /*\\n * Copyright (C) 2006,2008 by the Massachu...   \n",
       "3  /* -*- mode: c; c-basic-offset: 4; indent-tabs...   \n",
       "4  /* -*- mode: c; indent-tabs-mode: nil -*- */\\n...   \n",
       "\n",
       "                                         code_before  nloc complexity  \\\n",
       "0  /* -*- mode: c; c-basic-offset: 4; indent-tabs...  1655        439   \n",
       "1  /*\\n * Copyright (C) 2006,2008 by the Massachu...  3104        512   \n",
       "2  /*\\n * Copyright (C) 2006,2008 by the Massachu...  3104        513   \n",
       "3  /* -*- mode: c; c-basic-offset: 4; indent-tabs...    31          5   \n",
       "4  /* -*- mode: c; indent-tabs-mode: nil -*- */\\n...   902          4   \n",
       "\n",
       "  token_count programming_language  \\\n",
       "0       10633                    C   \n",
       "1       15617                    C   \n",
       "2       15621                    C   \n",
       "3         158                    C   \n",
       "4        3335                    C   \n",
       "\n",
       "                                          diff_added  \\\n",
       "0  [(189,     if (password == NULL || !(mask & KA...   \n",
       "1                                                 []   \n",
       "2   [(1471, \\tif (REMAIN == 0 || REMAIN > INT_MAX))]   \n",
       "3  [(43,     if (ctx->terminated || !ctx->establi...   \n",
       "4          [(209,     unsigned int terminated : 1;)]   \n",
       "\n",
       "                                        diff_deleted  \\\n",
       "0     [(189,     if (!(mask & KADM5_ATTRIBUTES) ||)]   \n",
       "1  [(821, \\tgeneric_gss_release_oid(&tmpmin, &sc-...   \n",
       "2                  [(1471, \\tif (REMAIN > INT_MAX))]   \n",
       "3              [(43,     if (! ctx->established) {)]   \n",
       "4                                                 []   \n",
       "\n",
       "                                                 vul  \\\n",
       "0                  if (!(mask & KADM5_ATTRIBUTES) ||   \n",
       "1  generic_gss_release_oid(&tmpmin, &sc->internal...   \n",
       "2                              if (REMAIN > INT_MAX)   \n",
       "3                          if (! ctx->established) {   \n",
       "4                                               None   \n",
       "\n",
       "                                               patch  \n",
       "0  if (password == NULL || !(mask & KADM5_ATTRIBU...  \n",
       "1                                               None  \n",
       "2               if (REMAIN == 0 || REMAIN > INT_MAX)  \n",
       "3        if (ctx->terminated || !ctx->established) {  \n",
       "4                       unsigned int terminated : 1;  \n",
       "\n",
       "[5 rows x 21 columns]"
      ]
     },
     "execution_count": 28,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df_diff = df_diff[(df_diff.num_lines_added<='1') & (df_diff.num_lines_deleted<='1')].reset_index() # you can change the value 1 with the number of lines to be considered.\n",
    "print('Number of files with single line modification = ' + str(len(df_diff['diff'])))\n",
    "\n",
    "# added two columns 'vul' and 'patch' in the dataframe. \n",
    "df_diff['vul'] = None\n",
    "df_diff['patch'] = None\n",
    "\n",
    "for i in range(len(df_diff['diff'])):\n",
    "    lines = df_diff['diff'][i].splitlines()\n",
    "    for line in lines:\n",
    "        if(line[0]=='-'):\n",
    "            df_diff.loc[i, 'vul'] = line[1:].strip() # the old line refers the 'vulnerability' line.\n",
    "        if(line[0]=='+'):\n",
    "            df_diff.loc[i, 'patch'] = line[1:].strip() # newly added line as a patch/fix  line.\n",
    "df_diff.head(5) # you will get two last columns\n",
    "# 'diff_parsed' column can also be used to get this result."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>cve_id</th>\n",
       "      <th>filename</th>\n",
       "      <th>num_lines_added</th>\n",
       "      <th>num_lines_deleted</th>\n",
       "      <th>code_before</th>\n",
       "      <th>code_after</th>\n",
       "      <th>cwe_id</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>CVE-2012-1013</td>\n",
       "      <td>svr_principal.c</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>/* -*- mode: c; c-basic-offset: 4; indent-tabs...</td>\n",
       "      <td>/* -*- mode: c; c-basic-offset: 4; indent-tabs...</td>\n",
       "      <td>NVD-CWE-Other</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>CVE-2014-4343</td>\n",
       "      <td>spnego_mech.c</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>/*\\n * Copyright (C) 2006,2008 by the Massachu...</td>\n",
       "      <td>/*\\n * Copyright (C) 2006,2008 by the Massachu...</td>\n",
       "      <td>CWE-415</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>CVE-2014-4344</td>\n",
       "      <td>spnego_mech.c</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>/*\\n * Copyright (C) 2006,2008 by the Massachu...</td>\n",
       "      <td>/*\\n * Copyright (C) 2006,2008 by the Massachu...</td>\n",
       "      <td>CWE-476</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>CVE-2014-5352</td>\n",
       "      <td>context_time.c</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>/* -*- mode: c; c-basic-offset: 4; indent-tabs...</td>\n",
       "      <td>/* -*- mode: c; c-basic-offset: 4; indent-tabs...</td>\n",
       "      <td>NVD-CWE-Other</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>CVE-2014-5352</td>\n",
       "      <td>gssapiP_krb5.h</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>/* -*- mode: c; indent-tabs-mode: nil -*- */\\n...</td>\n",
       "      <td>/* -*- mode: c; indent-tabs-mode: nil -*- */\\n...</td>\n",
       "      <td>NVD-CWE-Other</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>CVE-2014-5352</td>\n",
       "      <td>gssapi_krb5.c</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>/* -*- mode: c; c-basic-offset: 4; indent-tabs...</td>\n",
       "      <td>/* -*- mode: c; c-basic-offset: 4; indent-tabs...</td>\n",
       "      <td>NVD-CWE-Other</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>CVE-2014-5352</td>\n",
       "      <td>inq_context.c</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>/* -*- mode: c; c-basic-offset: 4; indent-tabs...</td>\n",
       "      <td>/* -*- mode: c; c-basic-offset: 4; indent-tabs...</td>\n",
       "      <td>NVD-CWE-Other</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>CVE-2014-5352</td>\n",
       "      <td>k5seal.c</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>/* -*- mode: c; c-basic-offset: 4; indent-tabs...</td>\n",
       "      <td>/* -*- mode: c; c-basic-offset: 4; indent-tabs...</td>\n",
       "      <td>NVD-CWE-Other</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>CVE-2014-5352</td>\n",
       "      <td>k5sealiov.c</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>/* -*- mode: c; c-basic-offset: 4; indent-tabs...</td>\n",
       "      <td>/* -*- mode: c; c-basic-offset: 4; indent-tabs...</td>\n",
       "      <td>NVD-CWE-Other</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>CVE-2014-5352</td>\n",
       "      <td>k5unseal.c</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>/* -*- mode: c; c-basic-offset: 4; indent-tabs...</td>\n",
       "      <td>/* -*- mode: c; c-basic-offset: 4; indent-tabs...</td>\n",
       "      <td>NVD-CWE-Other</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "          cve_id         filename num_lines_added num_lines_deleted  \\\n",
       "0  CVE-2012-1013  svr_principal.c               1                 1   \n",
       "1  CVE-2014-4343    spnego_mech.c               0                 1   \n",
       "2  CVE-2014-4344    spnego_mech.c               1                 1   \n",
       "3  CVE-2014-5352   context_time.c               1                 1   \n",
       "4  CVE-2014-5352   gssapiP_krb5.h               1                 0   \n",
       "5  CVE-2014-5352    gssapi_krb5.c               1                 1   \n",
       "6  CVE-2014-5352    inq_context.c               1                 1   \n",
       "7  CVE-2014-5352         k5seal.c               1                 1   \n",
       "8  CVE-2014-5352      k5sealiov.c               1                 1   \n",
       "9  CVE-2014-5352       k5unseal.c               1                 1   \n",
       "\n",
       "                                         code_before  \\\n",
       "0  /* -*- mode: c; c-basic-offset: 4; indent-tabs...   \n",
       "1  /*\\n * Copyright (C) 2006,2008 by the Massachu...   \n",
       "2  /*\\n * Copyright (C) 2006,2008 by the Massachu...   \n",
       "3  /* -*- mode: c; c-basic-offset: 4; indent-tabs...   \n",
       "4  /* -*- mode: c; indent-tabs-mode: nil -*- */\\n...   \n",
       "5  /* -*- mode: c; c-basic-offset: 4; indent-tabs...   \n",
       "6  /* -*- mode: c; c-basic-offset: 4; indent-tabs...   \n",
       "7  /* -*- mode: c; c-basic-offset: 4; indent-tabs...   \n",
       "8  /* -*- mode: c; c-basic-offset: 4; indent-tabs...   \n",
       "9  /* -*- mode: c; c-basic-offset: 4; indent-tabs...   \n",
       "\n",
       "                                          code_after         cwe_id  \n",
       "0  /* -*- mode: c; c-basic-offset: 4; indent-tabs...  NVD-CWE-Other  \n",
       "1  /*\\n * Copyright (C) 2006,2008 by the Massachu...        CWE-415  \n",
       "2  /*\\n * Copyright (C) 2006,2008 by the Massachu...        CWE-476  \n",
       "3  /* -*- mode: c; c-basic-offset: 4; indent-tabs...  NVD-CWE-Other  \n",
       "4  /* -*- mode: c; indent-tabs-mode: nil -*- */\\n...  NVD-CWE-Other  \n",
       "5  /* -*- mode: c; c-basic-offset: 4; indent-tabs...  NVD-CWE-Other  \n",
       "6  /* -*- mode: c; c-basic-offset: 4; indent-tabs...  NVD-CWE-Other  \n",
       "7  /* -*- mode: c; c-basic-offset: 4; indent-tabs...  NVD-CWE-Other  \n",
       "8  /* -*- mode: c; c-basic-offset: 4; indent-tabs...  NVD-CWE-Other  \n",
       "9  /* -*- mode: c; c-basic-offset: 4; indent-tabs...  NVD-CWE-Other  "
      ]
     },
     "execution_count": 29,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import pandas as pd\n",
    "query = \"\"\"\n",
    "SELECT cv.cve_id, f.filename, f.num_lines_added, f.num_lines_deleted, f.code_before, f.code_after, cc.cwe_id\n",
    "FROM file_change f, commits c, fixes fx, cve cv, cwe_classification cc\n",
    "WHERE f.hash = c.hash\n",
    "AND c.hash = fx.hash\n",
    "AND fx.cve_id = cv.cve_id\n",
    "AND cv.cve_id = cc.cve_id\n",
    "AND f.num_lines_added<=1\n",
    "AND f.num_lines_deleted<=1\n",
    "AND f.programming_language='C';\n",
    "\"\"\"\n",
    "c_single_line_fixes = pd.read_sql_query(query, conn)\n",
    "c_single_line_fixes.head(10)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## (At method level) Getting added and deleted statements from diff method for fixing the vulnerability. "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "- Getting the diff file from vulnerable/old method and fix/new/modified method with the same method name of the file.\n",
    "- Separating the modified statements into diff_added and diff_deleted statements.\n",
    "- Making a dataset with diff_added, diff_deleted and vul_type columns.\n",
    "\n",
    "(the generate dataset can be used for predicting patches for the vulnerabilities at method abstraction level)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [],
   "source": [
    "def to_diff_file(str1, str2):\n",
    "    import difflib\n",
    "    diff = difflib.ndiff(str1.splitlines(1), str2.splitlines(1))\n",
    "    result = ''.join(diff)\n",
    "    return result"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [],
   "source": [
    "def to_diff_dict(str1):\n",
    "    lines = str1.splitlines()\n",
    "    diff_dict = {}\n",
    "    added_lines = []\n",
    "    deleted_lines = []\n",
    "    for line in lines:\n",
    "        if(line[0]=='+'):\n",
    "            added_lines.append(line[1:].strip())\n",
    "        if(line[0]=='-'):\n",
    "            deleted_lines.append(line[1:].strip())\n",
    "\n",
    "    diff_dict = {'added':added_lines, 'deleted':deleted_lines}\n",
    "    return diff_dict"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [],
   "source": [
    "def separate_diff_method(diff_str):\n",
    "    \"\"\"returns a string of added statements and deleted statements \"\"\"\n",
    "    res = ast.literal_eval(diff_str)\n",
    "    added_lines = []\n",
    "    deleted_lines =[]\n",
    "    for i in res['added']:\n",
    "        added_lines.append(i.strip())\n",
    "\n",
    "    for i in res['deleted']:\n",
    "        deleted_lines.append(i.strip())\n",
    "\n",
    "    added_str = ' '.join(added_lines) # the statements are seperated by whitespaces instead of new lines\n",
    "    deleted_str = ' '.join(deleted_lines)\n",
    "    return added_str, deleted_str"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [],
   "source": [
    "def separate_diff(diff_str):\n",
    "    \"\"\"returns a string of added statements and deleted statements \"\"\"\n",
    "    import ast\n",
    "    res = ast.literal_eval(diff_str)\n",
    "    added_lines = []\n",
    "    deleted_lines =[]\n",
    "    for i in res['added']:\n",
    "        if type(i)==tuple:\n",
    "            added_lines.append(i[1].strip())\n",
    "        else:\n",
    "            added_lines.append(i.strip())\n",
    "\n",
    "    for i in res['deleted']:\n",
    "        if type(i)==tuple:\n",
    "            deleted_lines.append(i[1].strip())\n",
    "        else:\n",
    "            deleted_lines.append(i.strip())\n",
    "\n",
    "    added_str = ' '.join(added_lines) # the statements are seperated by whitespaces instead of new lines\n",
    "    deleted_str = ' '.join(deleted_lines)\n",
    "    return added_str, deleted_str"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>diff_added</th>\n",
       "      <th>diff_deleted</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>if (password == NULL || !(mask &amp; KADM5_ATTRIBU...</td>\n",
       "      <td>if (!(mask &amp; KADM5_ATTRIBUTES) ||</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>goto chpwfail; goto chpwfail; goto chpwfail; g...</td>\n",
       "      <td>goto bailout; goto bailout; goto bailout; goto...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>int                         ret, last_pwd; ret...</td>\n",
       "      <td>int                         ret, last_pwd, n_n...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>if (ent == NULL) { st = KRB5_KDB_NOENTRY; goto...</td>\n",
       "      <td>if (ent != NULL) { if ((st = populate_policy(c...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>krb5_key_data *key_data; if (n_key_data &lt;= 0) ...</td>\n",
       "      <td>krb5_key_data *key_data = NULL; if (n_key_data...</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                                          diff_added  \\\n",
       "0  if (password == NULL || !(mask & KADM5_ATTRIBU...   \n",
       "1  goto chpwfail; goto chpwfail; goto chpwfail; g...   \n",
       "2  int                         ret, last_pwd; ret...   \n",
       "3  if (ent == NULL) { st = KRB5_KDB_NOENTRY; goto...   \n",
       "4  krb5_key_data *key_data; if (n_key_data <= 0) ...   \n",
       "\n",
       "                                        diff_deleted  \n",
       "0                  if (!(mask & KADM5_ATTRIBUTES) ||  \n",
       "1  goto bailout; goto bailout; goto bailout; goto...  \n",
       "2  int                         ret, last_pwd, n_n...  \n",
       "3  if (ent != NULL) { if ((st = populate_policy(c...  \n",
       "4  krb5_key_data *key_data = NULL; if (n_key_data...  "
      ]
     },
     "execution_count": 34,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# adding two columns diff_added and diff_deleted to the dataframe\n",
    "\n",
    "diff_query =\"\"\"\n",
    "SELECT f.programming_language, f.file_change_id, m.name, m.code, m.before_change\n",
    "from file_change f, method_change m\n",
    "WHERE m.file_change_id=f.file_change_id\n",
    "AND f.programming_language='C'\n",
    "\"\"\"\n",
    "diff_method = pd.read_sql_query(diff_query, conn)\n",
    "#diff_method = diff_method[diff_method.programming_language=='C'].reset_index(drop=True)\n",
    "diff_result = pd.DataFrame(columns=['diff_added', 'diff_deleted'])\n",
    "\n",
    "for i in range(0, len(diff_method)-1, 2):\n",
    "    if str(diff_method['file_change_id'].iloc[i]) == str(diff_method['file_change_id'].iloc[i+1]) \\\n",
    "    and str(diff_method['name'].iloc[i]) == str(diff_method['name'].iloc[i+1]):   \n",
    "        diff_file = to_diff_file(diff_method.code[i], diff_method.code[i+1])\n",
    "        diff_dict = to_diff_dict(diff_file)\n",
    "        added, deleted = separate_diff(str(diff_dict))\n",
    "        diff_result = diff_result.append({'diff_added': added, \n",
    "                                          'diff_deleted': deleted}, ignore_index=True)\n",
    "diff_result.head(5)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
